为了账号安全,请及时绑定邮箱和手机立即绑定

JPA匹配ManyToMany关系中的元素子集

JPA匹配ManyToMany关系中的元素子集

慕莱坞森 2021-04-15 14:15:37
在我的数据库中,我有两个表:Person和Language。这两个表在Hibernate中以多对多关系映射,每个人说多种语言。现在,我想编写一个方法,该方法需要一种语言列表并返回说这些语言的所有(逻辑与)的人的列表。我试图建立一个像这样的标准:Restrictions.in("languages", languagesList);但这会返回一个使用这些语言的任何(逻辑或)语言的人员列表。我在网上看了一下,发现有一些使用连词和不存在的技巧,但它们看起来更像是黑客,所以我想检查是否有一种更干净的方法来实现这一目标。有什么建议么?谢谢。
查看完整描述

2 回答

?
绝地无双

TA贡献1946条经验 获得超4个赞

尝试JPQL查询,该查询首先选择所有会说一种语言的人,然后从该列表中选择还会说另一种语言的人。


List<Person> ps = em.createQuery("select distinct p from Person p join p.languages l where l.languageName = 'english' "

+ " and p.id in (select distinct p.id from Person p join p.languages l where l.languageName = 'spanish' )", Person.class).getResultList();

应该管用。


查看完整回答
反对 回复 2021-04-28
  • 2 回答
  • 0 关注
  • 138 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信