को संरक्षित करने वाली इकाई के प्रकार को बदलना मैं दृढ़ता परत के रूप में हाइबरनेट का उपयोग कर रहा हूं। एक ही टेबल में रहने वाली 2 इकाइयां हैं जो एकल टेबल विरासत रणनीति के साथ एक सुपरक्लास को विस्तारित करती हैं।अपनी आईडी
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
public abstract class A {
@Id
@GeneratedValue
protected Long id;
// some common fields for B and C
}
@Entity
public class B extends A {
// B-specific fields
}
@Entity
public class C extends A {
// C-specific fields
}
मेरे पास आईडी = 4 के साथ बी का एक उदाहरण है। मैं इस उदाहरण के प्रकार को अपने आईडी (4) को संरक्षित करने के लिए कैसे बदलूं?
B b = em.find(B.class, 4L);
C c = convertToC(b);
c.setId(b.getId());
em.remove(b);
em.persist(c);
कोड ऊपर
org.hibernate.PersistentObjectException: detached entity passed to persist: C
के साथ विफल हो यह बिल्कुल संभव है?
यह कैसे विफल हो जाता है? – skaffman
मैंने प्रश्न – artemb
पर अपवाद जोड़ा है बस एक झटका, लेकिन क्या आपने लगातार() के बजाय विलय() को कॉल करने का प्रयास किया है? – skaffman