Как сделать, чтобы значение первичного ключа в каждой таблице начиналось с цифры One (1) - PostgreSQL, Spring data jpa - PullRequest
0 голосов
/ 04 июня 2019

В моем текущем проекте мы используем PostgreSQL как DB и Spring данные JPA для сохранения.Во всех классах сущностей мы используем GenerationType.SEQUENCE для генерации значения первичного ключа.Работает нормально.Но значение первичного ключа в каждой таблице не начинается с 1.Значение всегда является следующим значением приращения максимального числа первичного ключа другой таблицы.

Как мы можем это изменить?,Как сделать, чтобы значение первичного ключа каждой таблицы начиналось с 1.

Ответы [ 2 ]

0 голосов
/ 04 июня 2019

Ниже код на ID работал у меня.

@Id
@SequenceGenerator(name = "MY_ENTITY_SEQ", sequenceName = "MY_ENTITY_SEQ", allocationSize=1)
@GeneratedValue(strategy = GenerationType.AUTO, generator = "MY_ENTITY_SEQ" )
@Column(updatable = false, nullable = false)
private Integer id;

Пожалуйста, дайте мне знать, если у меня возникнут какие-либо проблемы с этим подходом в будущем.

0 голосов
/ 04 июня 2019

Вам необходимо настроить последовательность для каждой таблицы. Этот ответ объясняет, как это сделать .

Я просто цитирую это здесь:

Содержание моего package-info.java:

@GenericGenerator(
    name = "optimized-sequence",
    strategy = "enhanced-sequence",
    parameters = {
        @Parameter(name="prefer_sequence_per_entity", value="true"),
        @Parameter(name="optimizer", value="hilo"),
        @Parameter(name="increment_size", value="50")})
package org.example.model;

import org.hibernate.annotations.GenericGenerator;
import org.hibernate.annotations.Parameter;

На стороне использования вам просто нужно

@Id @GeneratedValue(generator="optimized-sequence")
public long id;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...