JPA多个连接

时间:2012-12-06 09:59:05

标签: jpa join jpql

我有这些课程

class Project {
    @ManyToOne Company owner;
    @ManyToMany Set<Person> resources;
}
class Company {
    @ManyToOne Country country;
}
class Person {
}

如何编写JPQL以获取针对特定国家/地区公司的项目的所有资源?

下面的一个似乎不起作用(使用DataNucleus)

SELECT r FROM Project p JOIN p.resources r JOIN p.owner c WHERE c.country = :country

它尝试将r加入c,当然没有owner属性,并且在DataNucleus中引发了NullPointerException。

1 个答案:

答案 0 :(得分:2)

这应该符合您的期望:

SELECT resource FROM Project p INNER JOIN p.resources as resource

修改

我忘记了最初问题的一部分:

SELECT resource FROM Project p INNER JOIN p.resources as resource where p.owner.country = :country