我遇到了JPA2标准API的麻烦。是否有任何方法可以使用JPA2标准API来实现这样的smith:
选择 t1。id FROM Table1 t1 INNER JOIN Table2 t2 ON (t1。Id = t2.id)
使用以下规则:
- table2有table1引用
- 结果应该是table1 ids
我对JPA2标准API根感到困惑。在这种情况下如何创建join ?我应该使用两个ROOT:一个用于JOIN,另一个用于SELECT吗?请响应
Using where您可以执行通常的JPQL跨产品连接:
SELECT t1.id FROM Table1 t1, Table2 t2 WHERE t2.t1_id = t1.id
JPA支持右连接JPA不支持右连接查询。从这里:
右外连接和右外取连接不需要是Java Persistence 2.0中支持的。使用右连接的应用程序类型将不可移植。
本地SQL查询因此,另一种选择是使用本地SQL查询。
SELECT Table1.id FROM Table1, Table2 WHERE Table2.t1_id = Table1.id
JPQL查询将简单地为
select e1.id from Entity2 e2 join e2.entity1 e1
使用标准API,它看起来像这样(未经测试)。我讨厌这个API):
CriteriaQuery<String> cq = cb.createQuery(Long.class);
Root<Entity2> e2 = cq.from(Entity2.class);
cq.select(e2.get(Entity2_.entity1).get(Entity1_.id));