Estaba recopilando información sobre el método flush (), pero no tengo muy claro cuándo usarlo y cómo usarlo correctamente. Por lo que leí, tengo entendido que el contenido del contexto de persistencia se sincronizará con la base de datos, es decir, emitiendo declaraciones pendientes o actualizando los datos de la entidad.
Ahora tengo el siguiente escenario con dos entidades A
y B
(en una relación uno a uno, pero no impuesta ni modelada por JPA). A
tiene un PK compuesto, que se configura manualmente, y también tiene un campo de IDENTIDAD generado automáticamente recordId
. Esto recordId
debe escribirse en la entidad B
como una clave externa para A
. Estoy ahorrando A
y B
en una sola transacción. El problema es que el valor generada automáticamente A.recordId
no está disponible dentro de la transacción, a menos que puedo hacer una llamada explícita de em.flush()
después de llamar em.persist()
a A
. (Si tengo un IDENTITY PK generado automáticamente, entonces el valor se actualiza directamente en la entidad, pero ese no es el caso aquí).
¿Puede em.flush()
causar algún daño al usarlo dentro de una transacción?