Spring Data Sort使用比较器

时间:2014-09-17 13:12:36

标签: hibernate sorting jpa jpql spring-data-jpa

我有一个用于获取用户的spring数据JpaRepository。我想知道有没有办法为查询方法提供比较器参数来对结果进行排序。我想这样做的原因是因为我的结果是在页面中(结果需要根据所有数据进行排序。对每个页面上的实体进行排序对我来说不起作用)并且实体的排序谓词与它们松散地连接。 例如,我有一个方法:

@Query("........")
public Page<User> findUsersByPlaceCheckInAfter(@Param("place") Place place,
        @Param("after") Date after, Pageable pageable);

我希望有类似的东西:

@Query("........")
public Page<User> findUsersByPlaceCheckInAfter(@Param("place") Place place,
        @Param("after") Date after, Pageable pageable,Comparator<User> comparator);

如果不可能,我有什么选择。我正在使用hibernate 4.2.7.SP1作为JPA实现。

编辑:

详细解释。

我的应用程序中的每两个用户都有一个名为“匹配号码”的属性。 计算方法如下:

User A has - matchingCategories = [Books,Movies]
User B has - matchingCategories = [Books,Music]

用户A和用户B匹配号码为1。

我希望findUsersByPlaceCheckInAfter中的所有用户按匹配号排序。其中一个用户将作为参数提供给查询(当前登录用户)。

1 个答案:

答案 0 :(得分:0)

在您的查询本身中,您可以提供order by子句,以便您获得的任何数据都只按排序顺序排列。

为此您必须编写比较器,更好的方法是始终从数据库本身按顺序获取数据。

这样你就必须编写自定义查询来获取数据 (其中x.age =?1个x.lastname desc命令)