0

再会,

我有这个奇怪的问题:

以下语句有效

查询 q = em.createQuery("SELECT m from AccountClass as m");

而下面的声明没有

查询 q = em.createQuery("SELECT m from AccountClass");

我正在尝试编写一个允许我使用 where 子句的语句;

谢谢您阅读此篇。

4

1 回答 1

0

em.createQuery 期望 JPQL 查询而不是 SQL 查询作为参数传递。

SELECT m FROM AccountClass不是有效的 JPQL 查询,其中 asSELECT m FROM AccountClass m有效。如果您想进一步了解 JPQL,可以从有关 JPQL 的Java EE 教程章节开始

在这种情况下有效的原因SELECT m FROM AccountClass as m是因为AS是一个可选关键字。如果您希望发出 WHERE 子句,这样做很简单 - SELECT m FROM AccountClass m WHERE m.x= :param1, wherexAccountClass类的一个属性,并且param1是一个命名参数,其值必须使用该Query.setParameter方法设置。

于 2011-07-21T11:27:13.660 回答