JPQL选择已分配/未分配给关系的实体

时间:2012-04-10 13:51:45

标签: java jpql

我有两个实体

class A{

}

class B{
    @OneToMany()
@JoinTable(name = "a_b", joinColumns = { @JoinColumn(name = "a_id") }, inverseJoinColumns = { @JoinColumn(name = "b_id") }, uniqueConstraints = { @UniqueConstraint(columnNames = { "b_id" }) })
private Set<A> aSet;
}

该关系是可选的,因此不是每个A都会被分配给B而不是每个B都必须有任何A(s)。

我需要两个查询来选择分配给任何B的所有A(s)和另一个选择分配给任何B的 NOT 的A(s)。

我想保留连接表,我不希望A bean引用B,因此不允许修改关系。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您可以使用RIGHT JOIN

SELECT a FROM B b RIGHT JOIN b.aSet a WHERE b IS NULL

SELECT a FROM B b RIGHT JOIN b.aSet a WHERE b IS NOT NULL