Мы также столкнулись с той же проблемой. Мы создавали в xml и @GeneratedValue
в столбце id. Разрешение - удалить аннотацию @GeneratedValue
и поставить значение идентификатора вручную, также jpa принимает long
по умолчанию, поэтому задайте длинное значение, например 1l
.
Для автоматической генерации следуйте другому правилу.
Проблема вокруг автоматически сгенерированного идентификатора, связанного с JPA, решена, как показано ниже:
Измените класс модели Person.java, чтобы иметь следующие аннотации для атрибута Id:
@Id
@TableGenerator(name="TABLE_GEN",table="T_GENERATOR",pkColumnName="GEN_KEY",pkColumnValue="TEST",valueColumnName="GEN_VALUE",initialValue=1,allocationSize=1)
@GeneratedValue(strategy=GenerationType.TABLE, generator="TABLE_GEN")
public Long Id;
Это создаст таблицу в схеме mysql с именем T_GNERATOR
, которая будет отслеживать следующее значение для Id, а JPA через hibernate знает, как получить это значение. Предполагается, что начальное значение Id равно 1, и оно увеличивается на 1 при каждой новой вставке в него, что очевидно из атрибутов аннотации.