Saya sedang mengumpulkan informasi tentang metode flush (), tetapi saya tidak begitu jelas kapan harus menggunakannya dan bagaimana menggunakannya dengan benar. Dari apa yang saya baca, pemahaman saya adalah bahwa konten konteks ketekunan akan disinkronkan dengan database, yaitu mengeluarkan pernyataan yang luar biasa atau menyegarkan data entitas.
Sekarang saya mendapat skenario berikut dengan dua entitas A
dan B
(dalam hubungan satu-ke-satu, tetapi tidak diberlakukan atau dimodelkan oleh JPA). A
memiliki PK gabungan, yang disetel secara manual, dan juga memiliki bidang IDENTITAS yang dibuat secara otomatis recordId
. Ini recordId
harus ditulis ke entitas B
sebagai kunci asing ke A
. Saya menabung A
dan B
dalam satu transaksi. Masalahnya adalah bahwa nilai yang dihasilkan otomatis A.recordId
tidak tersedia dalam transaksi, kecuali saya membuat panggilan eksplisit em.flush()
setelah menelepon em.persist()
di A
. (Jika saya memiliki IDENTITAS PK yang dibuat secara otomatis, maka nilainya langsung diperbarui di entitas, tetapi tidak demikian di sini.)
Apakah bisa em.flush()
menyebabkan kerugian saat menggunakannya dalam transaksi?