我想按长度订购我的条款,相当于:
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();
干杯
答案 0 :(得分:1)
根据这个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
这里有一些关于等效标准的评论:
没有任何封面将其应用于order by子句而不是where子句,但希望可以使用。
答案 1 :(得分:1)
你无法在Criteria中订购类似的东西,你需要使用JPQL来实现这种秩序。
JPQL订单文档:Documentation