[英]How to filter an entity by multiple fields using a Spring JPA Repository?
[英]How to get distinct entity fields using Spring Data JPA?
該模型:
class User {String firstName, String lastName};
class Job {String name, List<User> users, List<User> checkers};
免責聲明 作業具有名稱,執行此作業的用戶和檢查器(檢查工作結果的用戶)。
這是Spring Data存儲庫:
interface JobDao extends PagingAndSortingRepository<Job>{
List<Job> findByUsers(Collection<User> users); //this return list of Jobs.
List<User> findCheckersByUsers(Collection<User> users); //I'd like to get list of users that check work for provided users. But it doesn't work this way.
}
這是我想要獲得的普通SQL:
SELECT DISTINCT checker FROM job WHERE job.user in (?1) -- ?1 - here are users provided
這個怎么做?
聚苯乙烯
jobs.stream().map(Job::getChecker).collect(toSet());
但是看起來不漂亮 首先,我將這種方法放在UserRepository中,因為它用於查找用戶。 但是無論如何,您只需要
@Query("select distinct checker from Job job"
+ " join job.checkers checker"
+ " join job.users user"
+ " where user in :checkedUsers")
List<User> findCheckersOf(@Param("checkedUsers") Set<User> users)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.