2010-09-17 13 views
19

मैं अपने वेब-एप में हाइबरनेट पर जेपीए का उपयोग कर रहा हूं। आप देख सकते हैं और ParentChild "एक-से-कई" के रूप में संबंधित के रूप मेंजेपीए संग्रह से बच्चे को हटा रहा है

 
class Child { 

    private Parent parent; 

    @ManyToOne(optional=false) 
    @JoinColumn(name="parent_id", referencedColumnName="parent_id", nullable=false, updatable=false) 
    public Parent getParent() { 
    return parent; 
    } 
} 

class Parent { 

    private Collection children; 

    @OneToMany(fetch=FetchType.EAGER, mappedBy="parent", cascade={CascadeType.ALL}) 
    public Collection getChildren() { 
    return children; 
    } 
} 

: यहाँ दो संस्थाओं (केवल टिककर खेल दिखाया जाता है) कर रहे हैं।

अब मुझे Parent उदाहरण लोड करने की आवश्यकता है, कुछ या सभी बच्चों को हटाएं और परिवर्तनों को सहेजें। नीचे कोड है जो मेरे लिए काम नहीं करता है:

 
Parent p = entityManager.find(Parent.class, 12345L); // load entity 
p.getChildren().clear(); // remove all children 
entityManager.merge(p); // try to save 

उपरोक्त उदाहरण में बाल संस्थाएं नहीं हटाई जाती हैं। अब मुझे प्रत्येक बच्चे के लिए मैन्युअल रूप से entityManager.remove() पर कॉल करना होगा।

क्या बाल संग्रह का प्रबंधन करने का कोई आसान तरीका है? कृपया ध्यान दें कि मैं हाइबरनेट-विशिष्ट कार्यक्षमता, केवल शुद्ध जेपीए का उपयोग नहीं करना चाहता हूं।

सादर, एंड्री

+0

संभव डुप्लिकेट: //stackoverflow.com/questions/306144/jpa-cascadetype-all-does-not-delete-orphans) –

उत्तर

23

जेपीए 2.0 के लिए आप @OneToMany

की orphanRemoval=true सेट कर सकते हैं जेपीए 1.0 के लिए, आप हाइबरनेट विशिष्ट व्याख्या का उपयोग करना चाहिए। यही कारण है, @Cascade एनोटेशन (cascade विशेषता के बजाय) है

हाइबरनेट 3.5+ जेपीए लागू

@Cascade({CascadeType.ALL, CascadeType.DELETE_ORPHAN}) 
के एक मूल्य के साथ 2.0

की http [जेपीए CascadeType.ALL अनाथ नहीं हटाता है।] (
+0

क्या जेपीए 1.0 के लिए कोई समाधान है? मैं जेपीए कार्यान्वयन को बदलने के लिए तैयार नहीं हूं। – Andrey

+0

@ एंड्रे हां, मैंने अभी इसे – Bozho

+0

जोड़ा है, यह एक अच्छा तरीका है। ऑर्गेन रिमूवल सेट करें, जब मर्ज अनाथ बच्चे को हटा सकता है – Scarlett

संबंधित मुद्दे