ฉันกำลังรวบรวมข้อมูลเกี่ยวกับวิธีการ flush () แต่ยังไม่ชัดเจนว่าควรใช้เมื่อใดและจะใช้อย่างไรให้ถูกต้อง จากสิ่งที่ฉันอ่านความเข้าใจของฉันคือเนื้อหาของบริบทการคงอยู่จะถูกซิงโครไนซ์กับฐานข้อมูลนั่นคือการออกคำสั่งที่โดดเด่นหรือการรีเฟรชข้อมูลเอนทิตี
ตอนนี้ฉันได้ติดตามสถานการณ์ที่มีสองเอนทิตีA
และB
(ในความสัมพันธ์แบบหนึ่งต่อหนึ่ง แต่ไม่ได้บังคับใช้หรือจำลองโดย JPA) A
มี PK recordId
คอมโพสิตซึ่งตั้งด้วยตนเองและยังมีสนาม นี้recordId
ควรจะเขียนกิจการเป็นต่างประเทศที่สำคัญในการB
A
ฉันกำลังบันทึกA
และB
ในการทำธุรกรรมครั้งเดียว ปัญหาคือว่าค่าสร้างขึ้นโดยอัตโนมัติA.recordId
ไม่ได้มีอยู่ในการทำธุรกรรมจนกว่าฉันโทรชัดเจนem.flush()
หลังจากเรียกบนem.persist()
A
(ถ้าฉันมี IDENTITY PK ที่สร้างขึ้นโดยอัตโนมัติค่าจะได้รับการอัปเดตโดยตรงในเอนทิตี แต่นั่นไม่ใช่กรณีนี้)
อาจem.flush()
ก่อให้เกิดอันตรายใด ๆ เมื่อใช้ภายในธุรกรรมหรือไม่?