使用 Hibernate Criteria 的不区分大小写的排序

Posted

技术标签:

【中文标题】使用 Hibernate Criteria 的不区分大小写的排序【英文标题】:Case-insensitive ordering using Hibernate Criteria 【发布时间】:2012-01-06 08:54:01 【问题描述】:

我有一个使用 Hibernate Criteria 创建的查询,如下所示:


Criteria criteria = db.getSession().createCriteria(Vendor.class);
criteria.addOrder(Property.forName("shortName").asc());
List<Vendor> vendorList = criteria.list();

我希望排序不区分大小写,相当于 HQL 查询


FROM Vendor ve ORDER BY lower(ve.shortName)

如何使用 Hibernate Criteria 实现这一目标?

【问题讨论】:

【参考方案1】:
criteria.addOrder(Order.asc("shortName").ignoreCase());

【讨论】:

谢谢,后一种方法奏效了。首先没有,因为 Property.forName 方法返回一个 Property 对象,它没有 ignoreCase 方法:javasourcecode.org/html/open-source/hibernate/…。

以上是关于使用 Hibernate Criteria 的不区分大小写的排序的主要内容,如果未能解决你的问题,请参考以下文章

Hibernate 中Criteria Query查询详解

是否可以使用 Criteria 或 DetachedCriteria Hibernate 进行此查询

hibernate hql查询 与Criteria 查询语句区别和效率

如何使用 Hibernate Criteria 编写此查询

Hibernate中 Restrictions.like() 方法

Hibernate---criteria的具体使用列子