2012-11-30 16 views
5

ObjectContentManager kullanarak bir düğümün altına düğüm eklemek istiyorum. ObjectContentManager kullanarak bir düğümün altında bir düğümü nasıl ekleyebilirim?

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

kullanarak ben ObjectContentManager kullanarak tek düğüm eklemek mümkün duyuyorum

, Şimdi bu düğümünün altında ben Pojo2 sınıfının başka düğüm eklemek istiyorum. Bir kod yazdım ama bana istisna veriyor.

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

Ancak bu bana bir istisna veriyor.

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 

Bunu nasıl başarabilirim? Şimdiden teşekkürler. 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; 

Bean ek açıklama senin başka bir düğüm olarak nesneyi devam eden ziyade olduğunu belirtmek için kullanılır şudur: Eğer OCM Test sınıfları bakarsak

+0

nesne var), pojo'nuzun nasıl kalıcı olacağını belirtmek için XML veya Java ek açıklamalarıyla bir eşleme tanımlayıcısı oluşturdunuz. Lütfen haritalama açıklayıcı bilgilerini sorunuza ekleyin. –

cevap

2

bu yapılandırılmalıdır nasıl iyi bir örnek var bir özellik. İşte

ben [ObjectContentManager üzerinde öğretici] (http://jackrabbit.apache.org/object-content-manager.html okurken B nesnesi ekler test kodu A 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(); 
İlgili konular