Hibernate标准和比较器

时间:2015-04-06 13:27:44

标签: java hibernate comparator hibernate-criteria comparable

我正在使用hibernate模板而且它是
    findByCriteria(criteria,offset,maxResults)方法
获得结果分页。 在调用findByCriteria之前获取结果 我在条件OrderBy属性中设置。问题是 想要订购此列不仅仅是简单的字符串,而是考虑到 帐号,它可能包含数字并以字母数字方式排序:

实体2
实体19
实体22

不喜欢这样:

实体19
实体2
实体22

要做到这一点,我正在使用比较器,它可以与Collections.sort一起使用。但我需要一种方法将它绑定到条件,并在触发findByCriteria方法后已经订购。有没有办法实现这个目标?
谢谢!

1 个答案:

答案 0 :(得分:0)

我认为你需要的是在你的标准中按一些“标准”对元素本身进行排序。基本上,您将使用SQL查询(在指定订单条件时由Hibernate内部构建)对元素本身进行排序,而不是在检索后对它们进行排序>您将获得更好的高效,清洁和直接的解决方案。

请记住,你每次都会获取一大块数据而你无法分析如何对整个数据集进行排序,但是你已经拥有的那个小数据加上之前的数据......你可能获得的数据(在接下来的数据中)是可以预见的。