JPA JPQL:当item(list / set)的属性包含另一个项目时选择项目

时间:2011-12-01 10:33:52

标签: list jpa set jpql

public class Document extends Model {
... 
@ManyToMany
public Set<User> accessors;
...
}

我想选择所有访问者包含特定用户的文档。 我只有最少的SQL经验,没有使用JPQL的经验。 那怎么办?

提前致谢

2 个答案:

答案 0 :(得分:43)

SELECT d FROM Document AS d WHERE :user MEMBER OF d.accessors

应该是您需要的,它比连接表更简单。 只是不要忘记将用户用作参数而不是使用其id:

query.setParameter("user", user);

答案 1 :(得分:21)

select distinct d from Document d inner join d.accessors a where a.id = :id

您应该了解SQL如何工作,然后学习如何在JPQL中使用连接。这是至关重要的。你会在网上找到很多教程。谷歌是你的朋友。