JPA实体以点表示法命名

时间:2016-05-05 17:45:04

标签: java eclipse hibernate jpa jpa-2.0

我有一些JPA实体类,其中实体的名称包含一个点:

这个命名方案似乎导致了命名查询的问题。在下面的查询中,eclipse为每个FROM子句以及对实体的任何引用显示错误。如果我将实体的名称更改为" City",则所有这些错误都会消失。应该注意的是,jpa / hibernate似乎并没有真正解决它,因为它编译并且工作得很好。但我想弄清楚如何在没有Eclipse的情况下保持这种命名方案无处不在。

image1 enter image description here

@Entity (name = "gnf.City")
@Table (name = "CITY")
@NamedQueries ({ @NamedQuery (name = "City.getMaxId", query = "SELECT MAX (o.id) FROM gnf.City o"),
        @NamedQuery (name = "City.getByCode", query = "SELECT c FROM gnf.City c WHERE c.code=:code"),
        @NamedQuery (name = "City.getByNameAndState", query = "SELECT c FROM gnf.City c WHERE c.name=:name AND c.state=:state"),
        @NamedQuery (name = "City.getByCodeAndState", query = "SELECT c FROM gnf.City c WHERE c.code=:code AND c.state=:state") })

1 个答案:

答案 0 :(得分:2)

JPA规范暗示实体名称必须是Java标识符(不允许字符串中包含句点/点字符)。 Eclipse Dali使用的默认JPQL解析器遵循JPA规范。如果Hibernate扩展了规范,那么您可以使用JBoss Tools Dali扩展并查看它是否提供了不同的解析器。

或者,您可以在Eclipse首选项中禁用Dali的JPQL验证:

Java持久性> JPA>错误/警告>查询和生成器> JPQL查询无效或不完整:忽略