Hibernate генерирует отрицательные значения id при использовании последовательности
У меня есть класс со следующим определением:
@Id
@SequenceGenerator(name = "SEQ_ACE_WORKERS_QUEUE_STATS_ID", sequenceName = "SEQ_ACE_WORKERS_QUEUE_STATS_ID", allocationSize = 500)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_ACE_WORKERS_QUEUE_STATS_ID")
@Column(name = "ID")
private long Id;
когда мы запустили его на Jboss 4.2.3, он работал нормально и генерировал правильные идентификаторы (начиная с 1000+)
теперь мы перешли на jboss 7.1.1, и он генерирует отрицательные идентификаторы! (начиная с -498 и вверх)
есть идеи, почему это может произойти?
1 ответов
Я только что столкнулся с этой проблемой при переходе с JBoss 6.1 на JBoss 7.1.
согласно документации JBoss AS 7.1 JPA ( https://docs.jboss.org/author/display/AS71/JPA+Reference+Guide#JPAReferenceGuide-Persistenceunitproperties),
JBoss 7.1 автоматически устанавливает несколько свойств гибернации. Одним из заданных свойств является hibernate.id.new_generator_mappings
который активирует новые генераторы ID, которые используют разные алгоритмы и не обратно совместимы. Установка этого свойства в false в вашей настойчивости.xml-файл восстановит старое поведение генератора идентификаторов.
документация hibernate 4 также содержит информацию о новых генераторах идентификаторов: http://docs.jboss.org/hibernate/core/4.0/manual/en-US/html_single/#mapping-declaration-id-generator - ...
в документации hibernate четко указано, что новые генераторы идентификаторов по умолчанию не включены, но, как отмечалось выше, JBoss 7.1 автоматически включает их.