2012-11-30 15 views
5

मैं ऑब्जेक्टकंटेंट प्रबंधक का उपयोग करके नोड के नीचे एक नोड जोड़ना चाहता हूं।ऑब्जेक्टकंटेंट मैनेजर का उपयोग करके मैं नोड के तहत नोड कैसे जोड़ सकता हूं?

मैं ObjectContentManager का उपयोग कर एक एकल नोड जोड़ने के लिए सक्षम हूँ,

Pojo1 p1 = new Pojo1(); 
p1 .setPath("/p1"); 
p1 .setName("p_3"); 
p1 .insert(p1); 
ocm.save(); 

का उपयोग कर अब इस नोड के अंतर्गत मैं Pojo2 वर्ग का एक और नोड जोड़ना चाहते हैं। मैंने एक कोड लिखा है, लेकिन यह मुझे अपवाद दे रहा है।

Pojo2 p2 = new Pojo2(); 
p2.setPath("/p1/p2"); 
p2.setName("p_3"); 
p2.insert(p2); 
ocm.save(); 

लेकिन यह मुझे अपवाद दे रहा है।

org.apache.jackrabbit.ocm.exception.ObjectContentManagerException: Cannot create new node of type nt:pojo1 from mapped class class com.sapient.Pojo1; nested exception is javax.jcr.nodetype.ConstraintViolationException: No child node definition for p2 found in node /p1 

मैं यह कैसे प्राप्त कर सकते हैं? अग्रिम धन्यवाद। A.java

@Node(jcrMixinTypes="mix:lockable") 
public class A 
{ 
@Field(path=true) private String path; 
@Field private String a1; 
@Field private String a2; 
@Bean(jcrType="nt:unstructured", jcrOnParentVersion="IGNORE") private B b; 

बीन एनोटेशन क्या संकेत मिलता है कि अपने एक और नोड के रूप में वस्तु बने बजाय प्रयोग किया जाता है है:

+0

जैसा कि मैंने पढ़ा [ObjectContentManager पर ट्यूटोरियल] (http://jackrabbit.apache.org/object-content-manager.html है), आप यह निर्दिष्ट करने के लिए एक्सएमएल या जावा एनोटेशन के साथ मैपिंग डिस्क्रिप्टर सेट अप करते हैं कि आपका पोजो कैसे जारी रखा जाए। कृपया अपने प्रश्न में मैपिंग डिस्क्रिप्टर जानकारी जोड़ें। –

उत्तर

2

आप ओसीएम परीक्षण वर्गों को देखें, तो वहाँ यह कैसे कॉन्फ़िगर किया जाना चाहिए का एक अच्छा उदाहरण है सम्पत्ति।

यहाँ परीक्षण कोड है कि बी वस्तु कहते हैं एक वस्तु AnnotationBeanDescriptorTest.java

ObjectContentManager ocm = getObjectContentManager(); 
// ------------------------------------------------------------------------ 
// Create a main object (a) with a null attribute (A.b) 
// ------------------------------------------------------------------------ 
A a = new A(); 
a.setPath("/test"); 
a.setA1("a1"); 
ocm.insert(a); 
ocm.save(); 

// ------------------------------------------------------------------------ 
// Retrieve 
// ------------------------------------------------------------------------ 
a = (A) ocm.getObject("/test"); 
assertNotNull("Object is null", a); 
assertNull("attribute is not null", a.getB()); 

B b = new B(); 
b.setB1("b1"); 
b.setB2("b2"); 
a.setB(b); 

ocm.update(a); 
ocm.save(); 
संबंधित मुद्दे