Hibernate/JPA и PostgreSQL - Первичный ключ?

Я пытаюсь реализовать некоторые основные объекты с помощью Hibernate/JPA. Первоначально код был развернут на MySQL и хорошо работал. Теперь, я портирую его для использования PostgreSQL. В MySQL мой класс объекта определяет свой первичный ключ как автоувеличивающее длинное значение со следующим синтаксисом:

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

Однако я нашел, что получаю ошибки с PostgreSQL, когда я пытаюсь вставить многочисленные записи за один раз. Чем я должен аннотировать свой первичный ключ получить то же поведение автопостепенного увеличения в PostgreSQL, как я имею с MySQL? Спасибо за любую справку можно обеспечить!

11
задан Martijn Pieters 17 November 2017 в 08:44
поделиться

2 ответа

Я решил проблему. Раньше - в моей реализации MySQL - я использовал абстрактный базовый класс со следующей сигнатурой:

@MappedSuperclass
public abstract class AbstractDomainEntity implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id = null;

        ...
}

... а затем я расширил его в каждой из моих оставшихся сущностей. С тех пор я вставил этот атрибут в сами сущности и настроил @GenerationType как SEQUENCE. Например:

public class UserProfileBean extends AbstractIdentifiedDomainEntitiy {

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "profile_seq")
    @SequenceGenerator(name = "profile_seq", sequenceName = "profile_seq")
    private Long id = null;

        ...
}

Таким образом, правильные последовательности будут сгенерированы и использованы в Hibernate / JPA и PostgreSQL. Раньше, даже если я объявлял GenerationType как Sequence, ничего не создавалось. Спасибо за вашу помощь и советы в этом вопросе!

10
ответ дан 3 December 2019 в 03:17
поделиться

GenerationType.IDENTITY

18
ответ дан 3 December 2019 в 03:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: