美好的一天,
我有这个奇怪的问题:
以下声明有效
查询q = em.createQuery(“从帐户中选择m作为m”);
而以下陈述不是
查询q = em.createQuery(“从AccountClass中选择”);
我正在尝试编写一个允许我使用where子句的语句;
感谢您阅读本文。
答案 0 :(得分:0)
em.createQuery
期望将JPQL查询而不是SQL查询作为参数传递。
SELECT m FROM AccountClass
不是有效的JPQL查询,其中SELECT m FROM AccountClass m
有效。如果您想进一步了解JPQL,可以从Java EE tutorial chapter on JPQL开始。
SELECT m FROM AccountClass as m
在这种情况下起作用的原因是因为AS
是可选关键字。如果您希望发出WHERE子句,那么这样做很简单 - SELECT m FROM AccountClass m WHERE m.x= :param1
,其中x
是AccountClass
类的属性,param1
是一个命名参数,必须使用Query.setParameter
方法设置值。