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