Spring data abstract entity

Я хочу создать базовый класс(AbstractEntity) для всех entity, в котором будет поле id. И столкнулся с проблемой. Мне нужно использовать GenerationType.SEQUENCE, но у всех entity должен быть свой sequence. Можно ли как то вынести это в базовый класс?

Если в AbstractEntity сделать вот так

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@Column(name = "id")
private Long id;

то, если я правильно понял, у всех entity будет один генератор последовательности, а это не подходит

Можно ли как-то определить для каждой entity свой sequence_generator который будет использоваться, при этом оставив id в базовом классе?

В самой entity делаю вот так

@GenericGenerator(
    name = "users_sequence_generator",
    strategy = "org.hibernate.id.enhanced.SequenceStyleGenerator",
    parameters = {
            @Parameter(name = "sequence_name", value = "users_id_seq"),
            @Parameter(name = "initial_value", value = "1"),
            @Parameter(name = "increment_size", value = "1")
    }

)

но остается вопрос, как "пробросить" это в AbstractEntity, что бы id который там описан, использовал именно эту последовательность?

Мне кажется, что это распространенный вопрос, но почему-то в гугле ответа на него я не нашел


Ответы (1 шт):

Автор решения: Alexandr

Укажите наименование генератора в базовой модели:

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator="users_sequence_generator")
@Column(name = "id")
private Long id;

Аналогичные обсуждения в английской версии:

→ Ссылка