Я хочу отключить слияние в репозитории jpa. Должно быть возможно только создавать новые записи и запрещать обновление старых. Итак, как отключить обновление записей для репозитория, если я расширяюсь от JpaRepository?
JpaRepository
Создание неизменяемой сущности может остановить изменения, происходящие с управляемыми сущностями, и в результате никакие изменения не будут распространяться внутри транзакции.
Однако это не останавливает hibernate обновляет запись базы данных, если вы передали неизменяемую запись с назначенным идентификатором, и она уже существует в db.
Итак, я думаю, вы можете заглянуть в @PreUpdate entity listener и выбросить исключение. Поэтому, если кто-то попытается обновить, это вызовет исключение, и обновление не произойдет.
@PreUpdate
Но лучший способ - создать службу, которая скрывает репозиторий и
Служба выполняет find перед save, чтобы избежать второй точки
find
save
Сделать объект неизменяемым, чтобы гарантировать первую точку.
То, что вам нужно, это в основном неизменяемая сущность, удалите сеттеры из своей сущности и используйте построители для создания новых сущностей.