使用JPA1.0:如何编写查询

时间:2011-07-21 10:40:20

标签: mysql jpa jpa-1.0

美好的一天,

我有这个奇怪的问题:

以下声明有效

查询q = em.createQuery(“从帐户中选择m作为m”);

而以下陈述不是

查询q = em.createQuery(“从AccountClass中选择”);

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

感谢您阅读本文。

1 个答案:

答案 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,其中xAccountClass类的属性,param1是一个命名参数,必须使用Query.setParameter方法设置值。