Средство проверки зарезервированных слов SQL сообщает мне, что "repeat" является зарезервированным ключевым словом SQL в MySQL (и DB2), поэтому вам необходимо его избежать.
JPA 1.0 не определяет стандартный способ справиться с этим, поэтому вам придется использовать решение Hibernate, которое опирается на кавычки. Из Справочного руководства по Hibernate:
Вы можете заставить Hibernate цитировать
идентификатор в сгенерированном SQL по
заключая имя таблицы или столбца в
кавычки в документе сопоставления.
Hibernate будет использовать правильный
стиль цитаты для диалекта SQL.
Обычно это двойные кавычки, но
SQL Server использует скобки и MySQL
использует backticks.
<class name="LineItem" table="`Line Item`">
<id name="id" column="`Item Id`"/><generator class="assigned"/></id>
<property name="itemNumber" column="`Item #`"/>
...
</class>
I Предположим, это будет работать и в orm.xml
.
JPA 2.0 пошел дальше и определил способ указания идентификаторов с разделителями:
2.13 Именование объектов базы данных
...
Чтобы указать идентификаторы с разделителями, необходимо использовать один из следующих подходов:
- Можно указать, что все идентификаторы базы данных, используемые для модуля персистентности, будут обрабатываться как идентификаторы с разделителями, указав элемент
<delimited-identifiers/>
в элементе persistence-unit-defaults
файла отображения объекта / реляционного xml. Если указан элемент <delimited-identifiers/>
, он не может быть переопределен.
- Для каждого имени можно указать, что имя объекта базы данных следует интерпретировать как идентификатор с разделителями следующим образом:
- Используя аннотации, имя указывается в качестве идентификатора с разделителями, заключая в себе имя
в двойных кавычках, в результате чего внутренние кавычки экранируются, например,
@Table(name="\"customer\"")
.
- При использовании XML имя указывается в качестве идентификатора с разделителями с использованием двойного
цитаты, например,
<table name=""customer""/>
Если вы используете JPA 2.0, я бы рекомендовал использовать портативное решение.