मैं प्ले फ्रेमवर्क 2 के साथ Ebean उपयोग कर रहा हूँ और कभी कभी यह इस तरह की OptimisticLockException साथ आता है:OptimisticLockException प्ले फ्रेमवर्क 2
play.core.ActionInvoker$$anonfun$receive$1$$anon$1: Execution exception [[OptimisticLockException: Data has changed. updated [0] rows sql[update manager set modification_time=?, session_id=?, expiration_date=? where id=? and rating=? and creation_time=? and modification_time=? and name=? and surname=? and login=? and password_hash=? and email=? and session_id=? and expiration_date=?] bind[null]]]
यह तब हो जब गिने-चुने अभिनेताओं डेटाबेस का उपयोग करने के लिए शुरू करते हैं।
तो, प्रबंधक वर्ग है:
public class Manager extends Model {
@Getter @Setter
Long id;
@Getter @Setter
private String name;
@Getter @Setter
private String surname;
@Column(unique = true)
@Getter @Setter
private String login;
@Getter @Setter
private String passwordHash;
@Getter @Setter
private String email;
@Embedded
@Getter @Setter
private ManagerSession session;
@Getter
private Timestamp creationTime;
@Getter
private Timestamp modificationTime;
@Override
public void save() {
this.creationTime = new Timestamp(System.currentTimeMillis());
this.modificationTime = new Timestamp(System.currentTimeMillis());
super.save();
}
@Override
public void update() {
this.modificationTime = new Timestamp(System.currentTimeMillis());
super.update();
}
}
बचाने() और अद्यतन() का इस्तेमाल किया बजाय @PrePersist एनोटेशन हुक, Ebean की वजह से इसका समर्थन नहीं करता। जैसा कि मुझे पता है @ वीरसन एनोटेशन ऑलवे ऑप्टिस्टिक लॉक मोड लाता है, इसलिए मैं इस तरह की चाल का उपयोग शुरू करता हूं। मुझे पता है कि ऑप्टिस्टिकिस्ट लॉक क्या है, लेकिन इस स्थिति को कैसे हल किया जाना चाहिए, जब कई कलाकारों को एक ही डीबी रिकॉर्ड को संशोधित करना चाहिए, जहां अंतिम संशोधन जीतता है?
हाँ, आप सही हैं। लेकिन मेरी परेशानी यहाँ नहीं थी। कक्षा पदानुक्रम में गहरी @ वीरसन एनोटेशन में समस्या थी। वैसे भी, आपका उत्तर उस व्यक्ति के लिए बहुत उपयोगी है जो पहली बार ऐसी परेशानी का सामना कर रहा है। इसे स्वीकार करने दें। –
फॉर्म * बाध्यकारी से पहले * venue.find.byId (आईडी)) * कॉल करने के लिए आपको ** आईडी ** कैसे मिलता है? –