JPA multiple joins

2019-06-28 03:29发布

I have these classes

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

How can I write a JPQL to get the all the resources working on projects for companies in a specific country?

The one below doesn't seem to work (using DataNucleus)

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

It tries to join r with c and of course does not have the owner property and a NullPointerException is raised inside DataNucleus.

标签: jpa join jpql
1条回答
Viruses.
2楼-- · 2019-06-28 04:10

This should do what you expect:

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

EDIT:

I forgot a part of the initial question:

SELECT resource FROM Project p INNER JOIN p.resources as resource where p.owner.country = :country
查看更多
登录 后发表回答