के साथ हाइबरनेट अपडेट मैं हाइबरनेट 4.1.7 का उपयोग कर रहा हूं और ऑब्जेक्ट को अपडेट करने का प्रयास कर रहा हूं, लेकिन कोई दस्तावेज नहीं है कि इसे कैसे किया जाना चाहिए। वर्तमान में, मैं यह कर रहा हूं:EntityManager
Person person = personDao.getPersonById(1);
person.setAge(23);
person.setLastname("McName");
person = personDao.update(person);
PersonDao अद्यतन में लगता है कि:
public Person update(Person person) {
return entityManager.merge(person);
}
PersonDao getPersonById में है:
public Person getPersonById(int id) {
personQuery = entityManager.createNamedQuery("Person.findPerson", Person.class);
personQuery.setParameter("id", id);
return personQuery.getSingleResult();
}
इसके अलावा मेरे पास व्यक्ति वर्ग के अंदर परिभाषित नामित क्वेरी और है यहां:
@NamedQuery(name="Person.findPerson", query="SELECT p FROM Person p WHERE p.id = :id")
इसका उपयोग करके मेरा व्यक्ति अपडेट नहीं किया जाएगा, मुझे हाइबरनेट का उपयोग करके अद्यतन कैसे कार्यान्वित करना चाहिए?
उपरोक्त कोड ठीक है, सिवाय इसके कि 'personDao.update() करने के लिए कॉल' पूरी तरह से अनावश्यक है कि अगर सब कुछ एक एकल लेनदेन में चलाया जाता है: एक इकाई के राज्य स्वतः पर/हाइबरनेट जेपीए द्वारा लगातार किया जाता है लेनदेन का अंत। GetPersonById विधि को 'em.find (Person.class, id)' में भी घटाया जा सकता है, जो कि सरल और अधिक कुशल होगा, क्योंकि अगर इकाई पहले से लोड हो जाती है तो यह किसी भी क्वेरी को निष्पादित नहीं करेगा। –
परिशिष्ट: यह निश्चित रूप से प्रलेखन में समझाया गया है। Http://docs.jboss.org/hibernate/orm/4.1/devguide/en-US/html_single/#d5e772 –