Лучший способ проверить повторяющуюся запись при вставке записи БД через весенние данные jpa

Наш пользователь может создавать записи клиентов в разных местах. После того, как он / она ищет клиента по идентификационному номеру. и запись о клиенте не найдена в базе данных, он / она введет данные о клиенте, чтобы создать запись о клиенте. Однако ожидается, что он / она не сможет сохранить свою запись о клиенте, если в базе данных существует другой идентификатор No. Поскольку тысячи пользователей могут создавать клиентов одновременно, ожидается, что наша система сможет сообщать нашему пользователю об ошибке дублирования записи.

Используя данные весны, мы используем следующий код для сохранения информации о клиенте.

customerRepository.save(customer);

Могу ли я узнать какой-нибудь хороший способ обнаружить ошибку дублирования записи при вставке данных в базу данных? Возможно, мы столкнулись с проблемой, аналогичной этот пост


person raymond.mh.ng    schedule 03.10.2013    source источник
comment
Ммм ... Разве вы не можете сделать столбец уникальным в своей БД ..? Spring автоматически выдает исключение с нарушением уникального ограничения. Вы, вероятно, можете поймать его и иметь свой путь с ним.   -  person user2339071    schedule 03.10.2013
comment
Наш опыт показывает, что весенние данные будут обновлять запись с тем же первичным ключом, а не выдавать ошибку.   -  person raymond.mh.ng    schedule 03.10.2013
comment
Используйте суррогатный первичный ключ и добавьте ограничение UNIQUE для свойства, которое вы хотите сделать уникальным. Это то, с чем JPA не справится за вас. Вам нужно будет проверить это до того, как сущность будет сохранена (до того, как вы вызовете save).   -  person Pavel Horal    schedule 03.10.2013
comment
Спасибо за предложение Павла. Однако в нашем случае мы не можем изменить номер идентификатора в качестве первичного ключа, который используется в разных системах. Мы можем добавить столбец (столбцы) или добавить суррогатный ключ (ключи), но это не может решить проблему обновления того же идентификатора. Нет проблем.   -  person raymond.mh.ng    schedule 04.10.2013
comment
Кажется, что нет стандартного способа справиться с этим, я думаю, мы можем использовать executeNativeSql для решения этой проблемы.   -  person raymond.mh.ng    schedule 07.10.2013