我使用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查询和另一个具有不同名称的查询。两者都很好。如果您想要对查询进行更多控制,我建议您使用不同的别名。
答案 0 :(得分:0)
您无法在SQL或JPQL中引用子查询中的父查询,它们是完全隔离的。因此,我无法看到您正在做的任何问题。你试过吗?
话虽如此,你的查询没有意义。您正在检查员工ID是否在部门列表中。我建议这是你遇到的问题。
答案 1 :(得分:0)
我尝试了两种方法,一个具有相同别名的JPQL查询和另一个具有不同名称的查询。两者都很好。如果您想要对查询进行更多控制,我建议您使用不同的别名。因为我根据传递的输入创建了动态where子句。