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

ric*_*oon 11 java jpa

我想知道为什么我得到"必须为范围变量声明提供一个识别变量." 我没有别名时出错.
当我向表中添加别名时,似乎我解决了问题.

代码有问题:

List result = entityManager.createQuery( "from Rental", Rental.class ).getResultList();
Run Code Online (Sandbox Code Playgroud)

解:

List result = entityManager.createQuery( "from Rental r", Rental.class ).getResultList();
Run Code Online (Sandbox Code Playgroud)

Mac*_*ski 10

您应该区分HQL(Hibernate查询语言)和JPQL(Java持久性查询语言).只要您的提供程序是Hibernate,您就会发现没有区别,但您必须记住正确的JPQL查询包含SELECT关键字.这是对这种差异解释.

回到你的问题 - JPQL需要为每个Entity表定义别名.