ไฮเบอร์เนตรับเก่า / ใหม่สำหรับบันทึกการตรวจสอบ

ฉันต้องการบันทึกการเปลี่ยนแปลงของเอนทิตีบางอย่าง ดังนั้นฉันจึงใช้ onflushdirty ของตัวสกัดกั้นไฮเบอร์เนต

แต่สถานะก่อนหน้านี้จะว่างเปล่าหรือเป็นโมฆะเสมอ

หลังจากการค้นหา ฉันพบ 2 วิธีในการรับค่าเก่า/ก่อนหน้า:

1- เปิดเซสชันชั่วคราวใหม่และค้นหา bean อีกครั้ง

2- เพื่อให้ PreviousStates[] ไม่ว่างเปล่า ฉันต้องใช้การผสานแทนการบันทึก/อัปเดต (ไม่แน่ใจว่าจริงหรือไม่ และไม่รู้ว่าจะเกิดอะไรขึ้นกับพฤติกรรมของระบบจริง...)

มีวิธีอื่นที่ดีกว่าในการทำเช่นนั้นไหม?


person Yichaoz    schedule 01.12.2011    source แหล่งที่มา


คำตอบ (1)


หากคุณเพียงแค่เรียกการอัปเดตด้วยวัตถุที่คุณสร้างขึ้น สถานะก่อนหน้าจะว่างเปล่า คุณควรโหลด / รับวัตถุก่อนแล้วจึงเปลี่ยนคุณสมบัติของมัน (ในโค้ดปกติของเราที่ไม่ได้อยู่ใน interceptor) เมื่อทำเช่นนี้ คุณจะได้รับสถานะก่อนหน้า ผสานบรรลุสิ่งเดียวกัน

person gkamal    schedule 01.12.2011