Исключение нарушения ограничения с использованием последовательности в JPA - PullRequest
0 голосов
/ 21 ноября 2018

Я использую Spring Data в своем проекте и использую JPA для отображения между сущностью и моей таблицей, это моя сущность

public class daoTable {

@Id
@SequenceGenerator(name = "seq_table_nc", sequenceName = "SEQ_TABLE_NC")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seq_table_nc")
private Long id;
// setter && getter && outher params
}

, а это мой репо

public interface daoTable Repository extends JpaRepository<daoTable , Long>, JpaSpecificationExecutor<daoTable >{}

когда я пытаюсь сохранить, я получаю эту проблему:

  1. org.springframework.dao.DataIntegrityViolationException: could not execute statement; SQL [n/a]; constraint [GQAO.PK_RT]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute statement
  2. java.sql.SQLIntegrityConstraintViolationException: ORA-00001: violation de contrainte unique

1 Ответ

0 голосов
/ 21 ноября 2018

Это может произойти, если у вас уже есть записи в базе данных с теми же значениями, которые генерирует ваш SequenceGenerator.

Например, если я сохраню 1 запись без использования этой SequenceGenerator (seq_table_nc) послечто добавить его в коде SequenceGenerator (seq_table_nc) и попытаться сохранить, я получу исключение, которое у вас есть, потому что генератор может дать мне значение, равное значению, которое у меня уже есть в базе данных.

Как правило, вы должны проверить, какое значение попытаться сохранить в БД для id.После этого вы должны увидеть, как обновить базу данных SequenceGenerator, чтобы она начала генерировать уникальные значения.

Удачи!

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