在JPA中使用保留的JPQL关键字

时间:2010-01-28 10:48:58

标签: java orm jpa java-ee jpql

我有一个名为“Group”的实体类,NetBeans警告我“实体表名是一个保留的Java Persistence QL关键字”。

类似的情况是使用保留的SQL关键字。

这个名字会被转义吗?是否使用不同的表名解决了问题@Table(name =“otherName”)。或者我应该重命名该课程吗?

2 个答案:

答案 0 :(得分:11)

  

这个名字会被转义吗?

JPA规范中有这样说,如果您的提供商这样做,这是提供商特定的。

  

使用不同的表名会解决问题@Table(name =“otherName”)

显然,它会(只要你当然不使用另一个保留关键字)。但是,如果您使用的是JPA 2.0提供程序,则有一种标准方法可以使用双引号来转义数据库对象名称:

@Table(name="\"Group\"")

在JPA 1.0中,没有任何标准,它取决于您的JPA提供程序。例如,Hibernate使用反引号:

@Table(name="`Group`")
  

或者我应该重命名课程吗?

没有。实体的表名默认为实体名称,但您可以使用我们看到的@Table注释来控制它。因此无需更改实体的类名。

答案 1 :(得分:4)

您不必重命名该类 - 您不应该 - 您选择的名称以最佳方式反映您的域名,并且您不应因工具或框架限制而更改它,以防工具/框架提供了一种避免“冲突”的方法。 JPA提供了这样一种方式。