Я собирал информацию о методе flush (), но я ' м не совсем понятно, когда его использовать и как правильно использовать. Из того, что я прочитал, я понимаю, что содержимое контекста постоянства будет синхронизировано с базой данных, то есть выдача невыполненных операторов или обновление данных объекта.
Теперь у меня есть следующий сценарий с двумя объектами A
и B
(во взаимно-однозначном отношении, но не принудительно или смоделировано JPA). A
имеет составной PK, который устанавливается вручную, а также имеет автоматически сгенерированное поле IDENTITY recordId
. Этот идентификатор записи
должен быть записан в объект B
как внешний ключ для A
. Я сохраняю A
и B
в одной транзакции. Проблема в том, что автоматически созданное значение A. recordId
недоступен в транзакции, если я не сделаю явный вызов em.flush ()
после вызова em.persist ()
на A
. (Если у меня есть автоматически сгенерированный PK IDENTITY, тогда значение обновляется непосредственно в сущности, но в данном случае это не так.)
Может ли em.flush ()
причинить вред при его использовании внутри транзакция?