【问题标题】:Hibernate Criteria order by term lengthHibernate Criteria order by term length
【发布时间】:2013-11-11 15:56:22
【问题描述】:

我想按长度排序我的术语,相当于:

SELECT term FROM <table_name> where term  like '%now%' order by length(term ) asc;

处于休眠状态。

目前这是我的标准代码:

    Criteria criteria = session.createCriteria(myClass.class);
    criteria.setProjection(Projections.distinct(Projections.property("term")));
    criteria.add(Restrictions.ilike("term", "%xyz%"));
    criteria.addOrder(Order.asc("term"));
    criteria.setMaxResults(10);
    List<String> list = criteria.list();

干杯

【问题讨论】:

  • 您需要添加criteria.addOrder(Order.asc("term"));
  • 我已经试过了,它没有按字符数排序。谢谢你的回复尤金

标签: java mysql hibernate jakarta-ee criteria


【解决方案1】:

您无法在 Criteria 中订购类似的东西,您需要使用 JPQL 进行这种订购。

JPQL 订单文档:Documentation

【讨论】:

    【解决方案2】:

    根据这个JPAQL有一个长度函数。

    http://www.objectdb.com/java/jpa/query/jpql/string

    和 10.2.5.16

    http://docs.oracle.com/cd/E28613_01/apirefs.1211/e24396/ejb3_langref.html

    这里 8.1.6 中有一些关于等效标准的评论:

    http://webdev.apl.jhu.edu/~jcs/ejava-javaee/coursedocs/605-784-site/docs/content/html/jpa-query-criteria-function.html

    没有一个覆盖将它应用于 order by 子句而不是 where 子句,但希望能够使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-05
      • 2023-03-23
      • 2010-12-19
      • 2012-01-19
      • 1970-01-01
      • 2016-03-09
      • 1970-01-01
      • 2012-08-31
      相关资源
      最近更新 更多