首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Eclipse Indigo - JPA验证问题

Eclipse Indigo - JPA验证问题
EN

Stack Overflow用户
提问于 2012-06-27 20:42:53
回答 4查看 8K关注 0票数 3

我正在使用eclipse indigo,并且遇到了"JPA验证问题“。

我的命名查询是:

代码语言:javascript
代码运行次数:0
运行
复制
from Person p where p.name = :name

并且有这样的错误:

代码语言:javascript
代码运行次数:0
运行
复制
The query does not start with a valid identifier, has to be either SELECT, UPDATE or DELETE FROM.

但它是一个有效的JPQL查询。有人知道怎样才能消除这个错误吗?

如果我将查询更改为

代码语言:javascript
代码运行次数:0
运行
复制
select p from Person p where p.name = :name

没有更多的错误,但我不想更改所有的查询。

谢谢

mp5

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-06-27 21:08:22

在我看来,任何形式的查询都是这样的:

代码语言:javascript
代码运行次数:0
运行
复制
from Person p where p.name = :name

实际上不是有效的JPQL。根据位于以下位置的语言参考:

http://docs.oracle.com/javaee/5/tutorial/doc/bnbuf.html

每条语句都需要在FROM部分之前有SELECTUPDATEDELETE语句。

下面是更多的例子:

http://en.wikipedia.org/wiki/Java_Persistence_Query_Language

不幸的是,看起来您需要更新所有查询以使其符合此格式。

票数 1
EN

Stack Overflow用户

发布于 2012-07-05 22:55:12

如果您不关心可移植性,可以关闭Indigo发行版中添加到Dali的JPQL验证。如果你有一个选择了Hibernate平台的JPA项目,你仍然会得到Hibernate工具对JPQL/HQL的验证。

转到工作区首选项'Java Persistence‘->JPA->Errors/Warning’,将'Queries and generators‘下的'Invalid or Invalid queries’更改为'Ignore‘。如果您希望Hibernate工具为Hibernate平台扩展Dali JPQL验证,或者只是在默认情况下将其关闭,那么您可以针对Hibernate工具输入一个bug。

票数 8
EN

Stack Overflow用户

发布于 2012-06-27 21:06:14

实际上,这不是一个有效的JPQL查询。JPQL以"SELECT“、"UPDATE”或"DELETE“开头。

显然,它可以在Hibernate (即HQL)中工作,但该查询不是标准的,也不是可移植的。因此,如果您不想更改您的查询,那么您将不使用JPA,并且您的应用程序是不可移植的。

JPA规范将证实这一点。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11226491

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档