【发布时间】:2014-07-01 09:08:24
【问题描述】:
我使用 eclipse 链接 jpa 作为我的 ORM。我正在根据传递的输入创建查询。动态 where 子句生成。一切都很好,直到我需要编写子查询。
举例
select emp from Employee emp where emp.empId IN ( select emp.dept from Employee emp)
如果您观察我上面的 JPQL 查询,我为表对象提供了相同的别名“emp”。它会引起任何问题吗?我可以毫无问题地运行查询。
我可以简单地说 emp1 和 emp2。定义具有相同别名的 JPQL 的正确方法是什么?
更新
我已经尝试了两种方式,一个具有相同别名的 JPQL 查询和另一个具有不同名称的查询。两者都工作正常。如果您想对查询进行更多控制,我建议您使用不同的别名。
【问题讨论】:
-
那不是 SQL 查询,它是 JPQL。也许用你的实际意思来澄清你的问题......
-
这不是原生(即 SQL)查询。这是JPQL。不知道您所说的“将来会造成任何问题”是什么意思...
-
对不起,它是 JPQL。我将其用作 entityManager.createQuery() 的一部分;因为我使用的是相同的 tableObject(这里是 emp),所以这个 emp 是否会导致任何问题。因为创造不在我们的控制范围内。
-
定义具有相同别名的 JPQL 是否正确?这是我应该问的。