2009-11-27 22 views
16

सरल अद्यतन को लागू करने का मानक तरीका क्या है?EntityManager (JPA) का उपयोग कर डीएओ में अद्यतन() विधि को कैसे कार्यान्वित करें?

उदाहरण: हमारे पास उपयोगकर्ता नंबर एनएनएनएनएनएन वाला उपयोगकर्ता है और अब हम इसे YYYYYY पर सेट करना चाहते हैं।

@PersistenceContext 
private EntityManager em; 

public void update (User transientUser) { 
    what should be here? 
} 

उपयोगकर्ता इकाई संभव के रूप में सरल है:

@Entity 
@Table (name = "USER") 
public class User { 

    @Id 
    @GeneratedValue 
    private Integer id; 

    @Column (nullable = false, unique = true) 
    private String login; 
    private String phone; 

    public User() { } 

    ... //some setters and getters 
} 
+0

em.merge (transientUser)? – marcosbeirigo

+0

शायद, मुझे यकीन नहीं है कि – Roman

+0

वास्तव में, अब मेरे पास यही है। लेकिन मैंने अभी तक परीक्षण नहीं किया है क्योंकि यूनिट परीक्षणों के संदर्भ को कॉन्फ़िगर करना इतना आसान नहीं है। – Roman

उत्तर

33

जेपीए विनिर्देशों के अनुसार उपयोग करते हैं, EntityManager#merge() वापस आ जाएगी का एक और ऑब्जेक्ट का संदर्भ जब ऑब्जेक्ट अल्रीया था वर्तमान संदर्भ में लोड किया गया है। तो, मैं नहीं बल्कि merge() का परिणाम लौट सकते हैं और update() विधि इस प्रकार लिख चाहते हैं:

@PersistenceContext 
private EntityManager em; 

public User update (User transientUser) { 
    return em.merge(transientUser); 
} 

फिर, इस तरह उपयोग (आरंभीकरण हिस्सा लंघन):

user.setPhone("YYYYYY"); 
user = dao.update(user); 
संबंधित मुद्दे