Eclipse编译错误' IN表达式中缺少左括号'

时间:2015-05-19 10:15:55

标签: eclipse java-ee jpa

我在Eclipse中编译了我的项目。它是一个带有JPA实体的Java EE项目。

如果@NamedQuery注释中包含IN子句,则会发现此错误。

enter image description here

这可能是对Java EE库的错误依赖吗?

3 个答案:

答案 0 :(得分:2)

解析器不理解:name语法。相反,它期望(:name1, :name2, ...)

你可以试着忽略这个问题;但我认为当JDBC替换参数时,生成的查询将失败,因为JDBC在替换参数时不支持列表(参见https://stackoverflow.com/questions/13254133/jdbc-prepared-statement-how-to-set-a-list

答案 1 :(得分:1)

这些错误是由Dali(Eclipse JPA工具插件)产生的。 Dali JPQL解析器无法解析连接的字符串。您可以通过Preferences:

禁用Dali JPQL解析器

窗口>偏好> Java持久性> JPA>错误/警告>查询&发电机> JPQL查询无效或不完整

您可以在此处找到有关Dali的更多信息:https://eclipse.org/webtools/dali/

答案 2 :(得分:0)

这里有同样的问题,我使用的是eclipse neon JEE版本和eclipselink 2.6。我的问题是我的persistence.xml有JPA 1.0架构,我的项目facetes配置为JPA版本1.0。纠正两者之后,我的问题就消失了。希望这有助于某人。

旁注:很久以前的原始bug with Dali was fixed。因此,如果您仍然遇到此问题,则可能是配置有问题。