J'ai recueilli des informations sur la méthode flush(), mais je ne sais pas vraiment quand l'utiliser et comment l'utiliser correctement. D'après ce que j'ai lu, je crois comprendre que le contenu du contexte de persistance sera synchronisé avec la base de données, c'est-à-dire qu'il s'agira d'émettre des instructions en suspens ou de rafraîchir les données des entités.
J'ai maintenant le scénario suivant avec deux entités A
et B
(dans une relation biunivoque, mais non appliquée ou modélisée par JPA). A
a un PK composite, qui est défini manuellement, et a également un champ IDENTITY généré automatiquement. recordId
. Ce site recordId
doit être écrit dans l'entité B
comme une clé étrangère à A
. J'économise A
et B
en une seule transaction. Le problème est que la valeur générée automatiquement A.recordId
n'est pas disponible au sein de la transaction, à moins que je ne fasse un appel explicite à la fonction em.flush()
après avoir appelé em.persist()
sur A
. (Si j'ai un IDENTITY PK généré automatiquement, alors la valeur est directement mise à jour dans l'entité, mais ce n'est pas le cas ici).
Can em.flush()
causer des dommages lors de son utilisation dans le cadre d'une transaction ?