Двойной первичный ключ Hibernate при перезапуске с использованием GenerationType.TABLE - PullRequest
6 голосов
/ 11 мая 2010

Мы столкнулись с проблемой, когда у нас есть подклассы Event, использующие GenerationType.TABLE для генерации первичного ключа, и при перезапуске серверов мы получаем дублированные ошибки первичного ключа.

Мы используем SQL Server и Hibernate версии 3.5.1-Final.

Вот как выглядят наши аннотации Hibernate:

@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public abstract class Event {

    @Id
    @GeneratedValue(strategy = GenerationType.TABLE)
    private long eventID;

мы не указываем allocSize, поэтому используем значение по умолчанию. Таблица последовательностей гибернации увеличивается, но, похоже, при перезапуске она повторно использует уже использованные идентификаторы.

1 Ответ

0 голосов
/ 21 апреля 2011

Попробуйте GenerationType.AUTO или SEQUENCE.AUTO может работать с помощью спящего волшебства, но SEQUENCE должен создать, как ни странно, последовательность в базе данных, которую он будет использовать для получения уникальных идентификаторов.Какой SQL Server вы используете?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...