Я создаю приложение с Hibernate в качестве инструмента ORM, и аннотации используются для настройки метаданных JPA.Теперь я столкнулся с некоторыми проблемами с генератором идентификаторов для сущностей.Мои сущности:
@MappedSuperclass
public class IdentityEntity {
@Id
@Column(name = "id")
@TableGenerator(name = "id_generator", table = "db_index", pkColumnName = "id", valueColumnName = "manuitemid", pkColumnValue = "id", allocationSize = 1, initialValue=1000)
@GeneratedValue(strategy = GenerationType.TABLE, generator = "id_generator")
private long id;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
}
В этом сценарии всякий раз, когда tis IdentityEntity
будет использоваться как родительский класс для любой сущности.Генератор идентификаторов будет использовать одно и то же имя столбца для генерации идентификаторов для всех объектов.Я пытаюсь поставить генератор идентификаторов на другие объекты, с другим именем столбца.Но hibernate возвращает сообщение об ошибке, что имя нового столбца не найдено.Как показано ниже:
ERROR MultipleHiLoPerTableGenerator - could not read or init a hi value
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'menuitemid' in 'field list'
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
Я хочу изменить это поведение и создать генератор идентификаторов для каждой сущности в отдельности.Какие варианты у меня есть?