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