Hibernate Criteria order by term length
Posted
技术标签:
【中文标题】Hibernate 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"));
我已经试过了,它没有按字符数排序。谢谢你的回复尤金
【参考方案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 子句,但希望能够使用。
【讨论】:
以上是关于Hibernate Criteria order by term length的主要内容,如果未能解决你的问题,请参考以下文章