JPA 多重连接

标签 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

它试图加入 rc当然没有 owner属性并且在 DataNucleus 中引发 NullPointerException。

最佳答案

这应该符合您的预期:

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

关于JPA 多重连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13741096/

相关文章:

java - Guice Injector 保持应用程序运行

sql - 大型数据列表的微服务和连接

mysql复杂连接三个表的总计

mysql - DISTINCT 关键字在 mysql 查询中不起作用

java - 为什么我的 jpql .getResultList() 返回 0 行以获得良好的查询

java - JPA脚本生成重复语句

java - Spring 启动: JPA query (JPQL) do not work but works when change to native query

python - 将两个数据帧连接到第二个数据帧内的值

java - 将相同项目添加到其他实体时,Spring JPA 实体会丢失数据

java - 有没有办法在 Spring Data @Query 注释值中使用常量?