有什么方法可以使JPA2标准API的Join像这样吗?



我遇到了JPA2标准API的麻烦。是否有任何方法可以使用JPA2标准API来实现这样的smith:

选择 t1。id FROM Table1 t1 INNER JOIN Table2 t2 ON (t1。Id = t2.id)

使用以下规则:

  1. table2有table1引用
  2. 结果应该是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));

相关内容

最新更新