Я збирав інформацію про метод flush (), але мені не зовсім зрозуміло, коли ним користуватися та як правильно ним користуватися. З того, що я прочитав, моє розуміння полягає в тому, що вміст постійного контексту буде синхронізовано з базою даних, тобто видавати видатні заяви або оновити дані сутності.
Тепер я отримав наступний сценарій з двома сутностями A
та B
(у взаємовідносинах один на один, але не застосовується та моделюється JPA). A
має складений ПК, який встановлюється вручну, а також має автоматично створене поле ІДЕНТИЧНОСТІ recordId
. Це recordId
має бути записане суб'єктом господарювання B
як зовнішній ключ A
. Я заощаджую A
і B
однією транзакцією. Проблема полягає в тому, що автоматично сгенерированное значення A.recordId
не доступно в угоді, якщо не зробити явний виклик em.flush()
після виклику em.persist()
на A
. (Якщо у мене є автоматично сформований ПК IDENTITY PK, то значення безпосередньо оновляється в об'єкті, але це не так.)
Чи може em.flush()
заподіяти шкоду при використанні її в рамках транзакції?