我有以下表格:
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的力量,但有些概念对我来说仍然含糊不清。 谢谢你的回答
答案 0 :(得分:1)
JPQL查询操作实体,而不是数据库表。我假设实体和持久属性的名称与给定的表和数据库列的名称相匹配。
因为所讨论的所有关系都是单值的,一对一或多对一(每个A
仅连接到一个B
(或可能不连接到任何一个),每个{{ {1}}连接到一个B
),根本不需要指定查询中的连接。
SELECT a FROM a a WHERE a.b.c.property = someValue
无需担心路径中的空值,因为正如JPA 2.0规范中所述:
C
同样不适用于集合值属性(一对多,多对多),因为无法通过路径表达式导航到其属性。