我不知道为什么得到“必须为范围变量声明提供标识变量”。没有别名时出现错误。
好像我在表中添加别名时就解决了问题。

有问题的代码:

List result = entityManager.createQuery( "from Rental", Rental.class ).getResultList();

解决方案:
List result = entityManager.createQuery( "from Rental r", Rental.class ).getResultList();

最佳答案

您应该区分HQL( hibernate 查询语言)和JPQL(Java持久性查询语言)。只要您的提供程序是Hibernate,您就不会有任何区别,但是您必须记住正确的JPQL查询由SELECT关键字组成。 Here's对此差异的解释。

回到您的问题-为每个实体表定义别名是JPQL的要求。

08-28 19:28