Hibernate обновляет мои сущности - PullRequest
0 голосов
/ 14 мая 2018

Я создал 2 объекта.Теперь, когда я получаю свои сущности из моего бэкэнда, я проверяю некоторые вещи, но когда мой бэкэнд возвращает эти сущности в мой интерфейс, спящий режим пытается автоматически обновить базу данных.

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

Как я могу указать hibernate не обновлять что-либо, пока я не запущу .save или .update явно?

1 Ответ

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

Вы уже получили фрагменты в комментариях, но позвольте мне соединить их в ответ:

Я думаю, это потому, что я изменяю некоторые данные в моей сущности, пока я делаю свою логику

Эта интерпретация верна.

Если вы загружаете объект через JPA, он присоединяется к сеансу, и каждое изменение в нем отслеживается и записывается в базу данных после закрытия сеанса / фиксации транзакции.

Во избежание этого вам необходимо удалить сущность из сеанса. Вы можете сделать это либо

  • отсоединение сущности от контекста постоянства: https://docs.oracle.com/javaee/7/api/javax/persistence/EntityManager.html#detach-java.lang.Object-

  • закрытие EntityManager / транзакции перед выполнением манипуляции. Это в основном означает внесение ваших изменений в сущность вне самого внешнего метода, помеченного @Transactional

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

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