该SQL保留字检查告诉我,“重复”是与MySQL(和DB2),所以你需要逃避它保留SQL关键字。
JPA 1.0并未定义处理该问题的标准方法,因此您必须使用依赖于反引号的Hibernate解决方案。从《 Hibernate参考指南》中:
5.4。SQL带引号的标识符
您可以通过将表名或列名放在映射文档中的反引号中来强制Hibernate在生成的SQL中引用标识符。Hibernate将为SQL方言使用正确的引号样式。这通常是双引号,但是SQL
Server使用括号,而MySQL使用反引号。<class name="LineItem" table="`Line Item`"> <id name="id" column="`Item Id`"/><generator /></id> <property name="itemNumber" column="`Item #`"/> ...</class>
我 认为 这也会起作用
orm.xml。
JPA 2.0更进一步,并定义了一种指定分隔标识符的方法:
2.13数据库对象的命名
…
要指定分隔标识符,必须使用以下方法之一:
- 通过在对象/关系xml映射文件
<delimited-identifiers/>的persistence-unit-defaults元素中指定元素,可以将用于持久性单元的所有数据库标识符指定为定界标识符。如果<delimited-identifiers/>指定了元素,则不能覆盖它。- 可以按名称指定将数据库对象的名称解释为带分隔符的标识符,如下所示:
*使用注释,通过将名称用双引号引起来将名称指定为带分隔符的标识符,从而对内部引号进行转义,例如@Table(name=""customer"")。
- 使用XML时,使用双引号将名称指定为带分隔符的标识符,例如,
<table name=""customer""/>
如果您使用的是JPA 2.0,建议您使用便携式解决方案。



