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