Hi,
I tried to write a tree application. I wrote a NodeEJB. A Node can have m children (Nodes) and one parent (also Node).
My problem is that I create the parent. In the next Step I try to create a child with the following code in the ejbPostCreate method of NodeBean:
LocalNode parent = localNodeHome.findByPrimaryKey( parentId );
LocalNode child = localNodeHome.findByPrimaryKey( id ); // this
Collection c = parent.getChildren( );
c.add( child );
parent.setChildren( c );
child.setParent( parent );
And I always get a NullPointerException because getChildren() returns null. Next Step I tried is
to check with an if clause if I get a null pointer and than I created a new Vector. But than I got a ClassCastException.
I have no idea what kind of class I should use for the collection. I attach the relation from the ejb-jar.xml.
Thanks for for help.
Andi
--
<ejb-relation>
<ejb-relation-name>node - node</ejb-relation-name>
<ejb-relationship-role>
<ejb-relationship-role-name>parent</ejb-relationship-role-name>
One
<relationship-role-source>
<ejb-name>NodeEJB</ejb-name>
</relationship-role-source>
<cmr-field>
<cmr-field-name>parent</cmr-field-name>
</cmr-field>
</ejb-relationship-role>
<ejb-relationship-role>
<ejb-relationship-role-name>children</ejb-relationship-role-name>
Many
<relationship-role-source>
<ejb-name>NodeEJB</ejb-name>
</relationship-role-source>
<cmr-field>
<cmr-field-name>children</cmr-field-name>
<cmr-field-type>java.util.Collection</cmr-field-type>
</cmr-field>
</ejb-relationship-role>
</ejb-relation>
I've found the error. I have switched the "Many" and "One" multiplicity in the ejb-jar.xml