Eclipse Indigo – JPAvalidation问题
我正在使用eclipse indigo并且正在进行“JPAvalidation问题”。
我的命名查询是:
from Person p where p.name = :name
并且有这个错误:
The query does not start with a valid identifier, has to be either SELECT, UPDATE or DELETE FROM.
但它是一个有效的JPQL查询。 有人知道如何删除此错误?
如果我将查询更改为
select p from Person p where p.name = :name
没有更多的错误,但我不想改变我的所有疑问。
谢谢
MP5
它看起来像任何forms的查询:
from Person p where p.name = :name
实际上并不是有效的JPQL。 根据语言参考:
http://docs.oracle.com/javaee/5/tutorial/doc/bnbuf.html
每个语句都需要在FROM
部分之前有SELECT
, UPDATE
或DELETE
语句。
以下是更多示例:
http://en.wikipedia.org/wiki/Java_Persistence_Query_Language
不幸的是,您似乎需要更新所有查询以使其符合此格式。
如果您不关心可移植性,可以关闭在Indigo版本中添加到Dali的JPQLvalidation。 如果你有一个选择了Hibernate平台的JPA项目,你仍然可以获得Hibernate Tools对JPQL / HQL的任何有效性。
转到“查询和生成器”下的工作区首选项“Java持久性” – >“JPA->错误/警告”,并将“无效或不完整的JPQL查询”更改为“忽略”。 如果您希望它们扩展Hibernate平台的Dali JPQLvalidation或者默认情况下将其关闭,您可以输入针对Hibernate工具的错误。
它不是有效的JPQL查询。 这是一个有效的HQL查询,但HQL不是JPQL。 JPQL查询必须具有select子句。
以下是JPQL子句的BNF语法,来自规范:
select_statement :: = select_clause from_clause [where_clause] [groupby_clause [having_clause] [orderby_clause]
事实上,这不是一个有效的JPQL查询。 JPQL以“SELECT”,“UPDATE”或“DELETE”开头。
显然它可以在Hibernate(即HQL)中工作,但该查询不是标准的,也不是可移植的。 因此,如果您不想更改查询,那么您不使用JPA,并且您的应用程序是不可移植的。
JPA规范将证实这一点。
- Eclipse:错误启动静态资源java.lang.IllegalArgumentException
- 有没有什么办法可以使用Eclipse在Java字符串文字中编写(复制 – 粘贴)格式良好的SQL查询?
- 保留已编译的java类中的参数/参数名称
- 严重:配置类org.apache.catalina.deploy.ApplicationListener的应用程序侦听器时出错
- 在Eclipse中创建一个简单的JAX-WS WebService
- 如何使用EclEmma和Eclipse忽略扫描某些类?
- “缺少sdk平台工具组件”
- 为什么我找不到我的档案?
- JBoss Tools部署错误:这可能是由于服务器的临时部署目录位于与最终目标不同的文件系统上