JPA multiple joins

2019-06-28 04:14发布

问题:

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.

回答1:

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


标签: jpa join jpql