Java JPA-必须为范围变量声明提供标识变量

Java JPA-必须为范围变量声明提供标识变量,java,jpa,Java,Jpa,我想知道为什么我得到“必须为范围变量声明提供标识变量”。当我没有别名时出错。 当我将alias添加到表中时,问题似乎解决了。 有问题的代码: List result = entityManager.createQuery( "from Rental", Rental.class ).getResultList(); 解决方案: List result = entityManager.createQuery( "from Rental r", Rental.class ).getResultLi

我想知道为什么我得到“必须为范围变量声明提供标识变量”。当我没有别名时出错。
当我将alias添加到表中时,问题似乎解决了。

有问题的代码:

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
关键字组成。对这种差异的解释

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