Je rassemblais des informations sur la méthode flush (), mais je ne sais pas très bien 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 en émettant des déclarations en suspens ou en actualisant les données d'entité.
Maintenant, j'ai le scénario suivant avec deux entités A
et B
(dans une relation un-à-un, 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
. Cela recordId
doit être écrit dans l'entité en B
tant que clé étrangère de A
. J'économise A
et B
en une seule transaction. Le problème est que la valeur générée automatiquement A.recordId
ne sont pas disponibles dans la transaction, à moins que je fais un appel explicite em.flush()
après avoir appelé em.persist()
le A
. (Si j'ai un IDENTITY PK généré automatiquement, la valeur est directement mise à jour dans l'entité, mais ce n'est pas le cas ici.)
Peut-il em.flush()
causer des dommages lors de son utilisation dans une transaction?