7

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

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

这个名字会被转义吗?使用不同的表名会解决@Table(name="otherName") 的问题吗?还是我应该重命名课程?

4

2 回答 2

12

这个名字会被转义吗?

JPA 规范中没有任何规定,如果您的提供者这样做,这是特定于提供者的

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

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

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

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

@Table(name="`Group`")

还是我应该重命名课程?

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

于 2010-09-05T21:15:09.257 回答
4

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

于 2010-01-28T10:59:32.267 回答