如何使用谓词使用JpaRepository.findAll获取不同的对象列表?

时间:2013-08-11 13:06:28

标签: java spring-data-jpa querydsl

我有类似的东西:

Predicate p = ...;
List<MyObject> objectList = (List<MyObject>) myRepository.findAll(p); // myRepository is autowired

这将获取所有MyObjects的列表,并带有重复项。是否有可能获得 DISTINCT 列表?

我真的需要使用EntityManager和CriteriaBuilder吗?或者只能使用谓词和存储库对象来完成它?

我不是在谈论手动迭代列表并删除重复项,或使用任何Collections API,而是更多关于JPA或QueryDSL API。

1 个答案:

答案 0 :(得分:1)

是的,这是可能的。下面是我能想到的简单步骤

  • 在MyObject类中实现hashCode()和equals()。

  • 使用直接构造函数创建一个基于上面列表的集合,该集合将Collection作为参数。