我有一个用于获取用户的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中的所有用户按匹配号排序。其中一个用户将作为参数提供给查询(当前登录用户)。
答案 0 :(得分:0)
在您的查询本身中,您可以提供order by子句,以便您获得的任何数据都只按排序顺序排列。
为此您必须编写比较器,更好的方法是始终从数据库本身按顺序获取数据。
这样你就必须编写自定义查询来获取数据 (其中x.age =?1个x.lastname desc命令)