我有一个名为“Group”的实体类,NetBeans 警告我“实体表名称是保留的 Java Persistence QL 关键字”。
类似的情况是使用保留的 SQL 关键字。
这个名字会被转义吗?使用不同的表名会解决@Table(name="otherName") 的问题吗?还是我应该重命名课程?
我有一个名为“Group”的实体类,NetBeans 警告我“实体表名称是保留的 Java Persistence QL 关键字”。
类似的情况是使用保留的 SQL 关键字。
这个名字会被转义吗?使用不同的表名会解决@Table(name="otherName") 的问题吗?还是我应该重命名课程?
这个名字会被转义吗?
JPA 规范中没有任何规定,如果您的提供者这样做,这是特定于提供者的。
使用不同的表名会解决问题@Table(name="otherName")
显然,它会(当然,只要您不使用另一个保留关键字)。但是,如果您使用的是 JPA 2.0 提供程序,则有一种标准方法可以使用双引号对 db 对象名称进行转义:
@Table(name="\"Group\"")
在 JPA 1.0 中,没有任何标准,这取决于您的 JPA 提供者。例如,Hibernate 使用反引号:
@Table(name="`Group`")
还是我应该重命名课程?
不,实体的表名默认为实体名,但您可以使用@Table
我们看到的注释来控制它。因此无需更改实体的类名。
您不必重命名该类 - 而且您不应该 - 您选择的名称以最好的方式反映了您的域,并且您不应该因为工具或框架的限制而更改它,以防工具/框架提供避免“冲突”的方法。JPA 提供了这样一种方式。