วิธีการ@Version
ทำงานของคำอธิบายประกอบใน JPA?
ฉันพบคำตอบต่างๆซึ่งมีสารสกัดดังนี้:
JPA ใช้ฟิลด์เวอร์ชันในเอนทิตีของคุณเพื่อตรวจหาการแก้ไขพร้อมกันกับเรกคอร์ดที่เก็บข้อมูลเดียวกัน เมื่อรันไทม์ JPA ตรวจพบความพยายามที่จะแก้ไขเร็กคอร์ดเดียวกันพร้อมกันมันจะแสดงข้อยกเว้นสำหรับธุรกรรมที่พยายามคอมมิตครั้งสุดท้าย
แต่ฉันยังไม่แน่ใจว่ามันทำงานอย่างไร
จากบรรทัดต่อไปนี้:
คุณควรพิจารณาฟิลด์เวอร์ชันไม่เปลี่ยนรูป การเปลี่ยนค่าฟิลด์มีผลลัพธ์ที่ไม่ได้กำหนดไว้
หมายความว่าเราควรประกาศฟิลด์เวอร์ชันของเราเป็นfinal
?
UPDATE myentity SET mycolumn = 'new value', version = version + 1 WHERE version = [old.version]
อัปเดตเวอร์ชันในการสอบถามการปรับปรุงทุก: หากมีคนอัปเดตระเบียนold.version
จะไม่ตรงกับข้อมูลในฐานข้อมูลอีกต่อไปและส่วนคำสั่งจะป้องกันไม่ให้การอัปเดตเกิดขึ้น 'แถวที่อัปเดต' จะเป็น0
ซึ่ง JPA สามารถตรวจพบเพื่อสรุปว่ามีการแก้ไขพร้อมกันเกิดขึ้น