Автоинкремент не работает PostgreSQL - Java EE APP - PullRequest
0 голосов
/ 14 декабря 2018

У меня есть приложение, в котором у меня есть автоинкремент для PK Id.Мне пришлось добавить другую автоинкрементную колонку, и я использовал жидкостьбазу, чтобы заставить ее работать, - жидкость создала последовательность для автоинкремента.Когда я делаю вставку из инструмента запросов или когда я не сопоставляю это поле в сущности и работаю, автоинкремент сохраняется.Но когда я добавляю:

@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "next_value", nullable=false, unique=true)
private Long nextValue;

я получаю ужасную ошибку:

Caused by: org.postgresql.util.PSQLException: ERROR: empty value in the "next_value" column violates the limit of the required value

Что здесь не так?

РЕДАКТИРОВАТЬ:

Моя жидкостьИзмените набор, чтобы добавить этот столбец и сделать его автоинкрементным:

<addColumn tableName="table">
      <column name="next_value" type="number"/>
    </addColumn>
<addAutoIncrement
        columnDataType="number"
        columnName="next_value"
        incrementBy="1"
        startWith="1"
        tableName="table"/>
<sql>select setval('table_next_value_seq', (select cast(current_value+1 as bigint) from gapless_sequence), false)</sql>

setval был использован для его запуска не с 1

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

Вы должны отключить вставляемый и обновляемый false

@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "next_value", unique = true, nullable = false, insertable = false,updatable = false)
0 голосов
/ 14 декабря 2018

Я думаю, это должно изменить таблицу в дБ

ALTER TABLE tblName(
nextValue LONG NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1),

....

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