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

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

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

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

这个名字会被转义吗?

JPA规范中没有任何内容表明,如果您的提供商这样做,这是提供商特定的。

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

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

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

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

 @Table(name="`Group`") 

或者我应该重命名课程?

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

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