【发布时间】:2011-07-21 10:40:19
【问题描述】:
早安,
我有一个奇怪的问题:
以下语句有效
Query q = em.createQuery("SELECT m from AccountClass as m");
而下面的语句没有
Query q = em.createQuery("SELECT m from AccountClass");
我正在尝试编写一个允许我使用 where 子句的语句;
感谢您阅读本文。
【问题讨论】:
早安,
我有一个奇怪的问题:
以下语句有效
Query q = em.createQuery("SELECT m from AccountClass as m");
而下面的语句没有
Query q = em.createQuery("SELECT m from AccountClass");
我正在尝试编写一个允许我使用 where 子句的语句;
感谢您阅读本文。
【问题讨论】:
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 是一个命名参数,其值必须使用 @ 设置987654323@方法。
【讨论】: