我遇到了JPA2标准API的问题。有没有任何方法可以使用JPA2标准API来制作这样的smth:
SELECT t1.id FROM 表1 t1 INNER JOIN 表2 t2 ON (t1.id = t2.id)
遵守这些规则:
我已经接受了JPA2标准API Root。如何在这种情况下创建联接?我应该使用两个ROOT'一个用于JOIN,另一个用于SELECT?请回复
答案 0 :(得分:1)
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));
答案 1 :(得分:1)
使用 你可以做一个通常的JPQL跨产品加入:
SELECT t1.id FROM Table1 t1, Table2 t2 WHERE t2.t1_id = t1.id
JPA对右连接的支持 JPA不支持右连接查询。来自here:
不需要右外连接和右外连接 Java Persistence 2.0支持。使用RIGHT join的应用程序 类型不可移植。
原生SQL查询 所以另一种选择是使用本机SQL查询。
SELECT Table1.id FROM Table1, Table2 WHERE Table2.t1_id = Table1.id