以下是主表:
@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
}
当我使用连接获取进行查询时,我得到的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的问题。提前感谢!
1条答案
按热度按时间js81xvg61#
我认为,正确的问题应该是: