【发布时间】:2017-01-17 15:09:52
【问题描述】:
String query = "select t from myTable t where t.idOne = " + myId
+ " AND t.idTwo = " + myIdTwo
+ " AND t.idThree = " + myIdThree
+ "AND t.idFour = (select max(t.idFour) from t)";
所以 myTable 有一个列,我需要从中获取 MAX id 并在查询中使用它。
最后一行给了我一个错误:
运行查询时出错:创建查询时发生异常 在 EntityManager 中查询:
java.lang.IllegalArgumentException:一个 在 EntityManager 中创建查询时发生异常:异常 说明:语法错误解析 [从上面查询]。 [214, 214] 一个 必须为范围变量提供标识变量 声明。
【问题讨论】:
-
这是 JPQL 还是 SQL?因为
myTable实际上应该是JPQL中的MyEntity(实体类的名称)。 -
对不起它的jpql,你说得对,它是实体类的名称,我只是这样命名的
-
这不是您在问题中所问的,但(使用正确的
ORDER BY子句)会给您想要的结果:stackoverflow.com/questions/6708085/… -
也许你可以试试
AND t.idFour = (select MAX(t.idFour))