簡體   English   中英

使用 WHERE 子句在一個查詢中獲取 @ElementCollection

[英]Fetch @ElementCollection in one query with WHERE clause

這是主表:

@Entity
public class Group {

    @Id
    private Integer id;

    @ElementCollection(fetch = EAGER)
    @CollectionTable(name = "group_members",
            joinColumns = @JoinColumn(name = "group_id"))
    @Column(name = "email")
    private Set<String> members = new HashSet<>();

在我的例子中是 ElementCollection 的表:

group_members {
int group_id,
varchar email
}

當我使用 join fetch 進行查詢時,我得到了 Group 及其所有成員在 Set 中。

但是,當我試圖通過其中一名成員對其進行過濾時,我只得到了我搜索過的一個成員的群組。

這是一個查詢:

@Query(value = "select group from Group group left outer join fetch group.members members where members = :email")
List<Group> findByMember(@Param("email") String email);

主要目標是它應該只有一個查詢,沒有 N+1 問題。 提前致謝!

我相信正確的查詢是:

select distinct group from Group group 
 left join fetch group.members members 
 where :email member of group.members

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM