Возвращенный идентификатор объекта отличается от фактических данных, сохраненных в базе данных. - PullRequest
0 голосов
/ 07 мая 2018

Я использую Spring Data JPA. Когда я проверяю сущность, возвращенную методом save (Entity), она отличается от фактического идентификатора, сохраненного в базе данных. Я использую Oracle, и моя конфигурация Entity ID использует последовательность из базы данных Oracle.

@Id
@Column(name = "ID", nullable = false)
@GeneratedValue(strategy = GenerationType.AUTO, generator = "SEQ_NAME")
@SequenceGenerator(name = "SEQ_NAME", sequenceName = "SEQ_1", allocationSize = 1)
private BigDecimal id;

Пример сценария:

  1. Вставить запись1 с помощью сохранения (запись1);
  2. Проверенная запись1 имеет ID = 1001
  3. Проверено БД и ИД 1002.

Все остальные данные в порядке, кроме ID.

EDIT:

Я удаляю всю другую логику в коде и оставляю только часть сохранения, чтобы изолировать проблему.

1 Ответ

0 голосов
/ 08 мая 2018

Я только что узнал, что есть триггер db, который вызывает SEQ1.nextVal каждый раз, когда вставляется запись. Сброс триггера и изменение таблицы, чтобы DEFAULT SEQ1.nextVal решает мою проблему.

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