我想知道为什么我得到"必须为范围变量声明提供一个识别变量。"我没有别名的错误。
当我在表中添加别名时,似乎我解决了问题。
有问题的代码:
List result = entityManager.createQuery( "from Rental", Rental.class ).getResultList();
解决方案:
List result = entityManager.createQuery( "from Rental r", Rental.class ).getResultList();
答案 0 :(得分:10)
您应该区分HQL
(Hibernate查询语言)和JPQL
(Java持久性查询语言)。只要您的提供商是Hibernate,您就会发现没有区别,但您必须记住,正确的JPQL
查询包含SELECT
个关键字。 Here's对这种差异的解释。
回到你的问题 - 为每个实体表定义别名是JPQL
。