跨表的Jpql查询

时间:2013-02-18 21:25:10

标签: jpa orm jpql

我有以下表格:

Table A: id b-id
Table B: id property

我可以像JPQL语言一样过滤表A的元素吗?

SELECT a FROM a a JOIN a.b-id targetId WHERE targetId.property =:someValue

我想获得表A的元素,其中引用的B元素具有property = someValue

如果我介绍第三张表

Table A: id b-id
Table B: id c-id
Table C: id property

如何获得c.property = someValue?

的A元素

我开始意识到ORM的力量,但有些概念对我来说仍然含糊不清。 谢谢你的回答

1 个答案:

答案 0 :(得分:1)

JPQL查询操作实体,而不是数据库表。我假设实体和持久属性的名称与给定的表和数据库列的名称相匹配。

因为所讨论的所有关系都是单值的,一对一或多对一(每个A仅连接到一个B(或可能不连接到任何一个),每个{{ {1}}连接到一个B),根本不需要指定查询中的连接。

SELECT a FROM a a WHERE a.b.c.property = someValue

无需担心路径中的空值,因为正如JPA 2.0规范中所述:

C

同样不适用于集合值属性(一对多,多对多),因为无法通过路径表达式导航到其属性。