wood burning stoves 2.0*
The moose likes EJB and other Java EE Technologies and the fly likes Error in EJB2.0 CMR Deployment Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Android Security Essentials Live Lessons this week in the Android forum!
JavaRanch » Java Forums » Java » EJB and other Java EE Technologies
Bookmark "Error in EJB2.0 CMR Deployment" Watch "Error in EJB2.0 CMR Deployment" New topic
Author

Error in EJB2.0 CMR Deployment

Pras Tiwari
Ranch Hand

Joined: Nov 07, 2005
Posts: 186
Hi,

I m developing a sample EJB Application using EJB CMP2.0 with CMR. I have two beans CartMaster & cartDetail with 1-to-many CMR relatioship between them. My Descriptors files are:-

ejb-jar.xml
========
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/dtd/ejb-jar_2_0.dtd">

<ejb-jar >

<description><![CDATA[No Description.]]></description>
<display-name>Generated by XDoclet</display-name>

<enterprise-beans>
<entity >
<description><![CDATA[Description for CartDetail]]></description>
<display-name>Name for CartDetail</display-name>
<ejb-name>CartDetail</ejb-name>
<home>econify.cartdetail.interfaces.CartDetailHome</home>
<remote>econify.cartdetail.interfaces.CartDetail</remote>
<local-home>econify.cartdetail.interfaces.CartDetailLocalHome</local-home>
<local>econify.cartdetail.interfaces.CartDetailLocal</local>

<ejb-class>econify.cartdetail.ejb.CartDetailCMP</ejb-class>
<persistence-type>Container</persistence-type>
<prim-key-class>java.lang.Integer</prim-key-class>
<reentrant>False</reentrant>
<cmp-version>2.x</cmp-version>
<abstract-schema-name>CartDetail</abstract-schema-name>
<cmp-field >
<description><![CDATA[]]></description>
<field-name>cartbeanid</field-name>
</cmp-field>
<cmp-field >
<description><![CDATA[]]></description>
<field-name>cartbeandetailid</field-name>
</cmp-field>
<cmp-field >
<description><![CDATA[]]></description>
<field-name>partid</field-name>
</cmp-field>
<cmp-field >
<description><![CDATA[]]></description>
<field-name>quantity</field-name>
</cmp-field>
<cmp-field >
<description><![CDATA[]]></description>
<field-name>unitprice</field-name>
</cmp-field>
<primkey-field>cartbeandetailid</primkey-field>
</entity>

<entity >
<description><![CDATA[Description for ent1]]></description>
<display-name>Name for ent1</display-name>

<ejb-name>CartMaster</ejb-name>

<home>econify.cartmaster.interfaces.CartMasterHome</home>
<remote>econify.cartmaster.interfaces.CartMaster</remote>
<local-home>econify.cartmaster.interfaces.CartMasterLocalHome</local-home>
<local>econify.cartmaster.interfaces.CartMasterLocal</local>

<ejb-class>econify.cartmaster.ejb.CartMasterCMP</ejb-class>
<persistence-type>Container</persistence-type>
<prim-key-class>java.lang.String</prim-key-class>
<reentrant>False</reentrant>
<cmp-version>2.x</cmp-version>
<abstract-schema-name>CartMaster</abstract-schema-name>
<cmp-field >
<description><![CDATA[]]></description>
<field-name>cartdate</field-name>
</cmp-field>
<cmp-field >
<description><![CDATA[]]></description>
<field-name>cartbeanid</field-name>
</cmp-field>
<cmp-field >
<description><![CDATA[]]></description>
<field-name>customerid</field-name>
</cmp-field>
<cmp-field >
<description><![CDATA[]]></description>
<field-name>status</field-name>
</cmp-field>
<cmp-field >
<description><![CDATA[]]></description>
<field-name>totalvalue</field-name>
</cmp-field>
<primkey-field>cartbeanid</primkey-field>

<query>
<description><![CDATA[]]></description>
<query-method>
<method-name>ejbSelectmaxcartid</method-name>
<method-params>
</method-params>
</query-method>
<ejb-ql><![CDATA[SELECT MAX(cms.cartbeanid) FROM CartMaster AS cms]]></ejb-ql>
</query>

</entity>
</enterprise-beans>

<!-- Relationships -->
<relationships >
<ejb-relation >
<ejb-relation-name>Parent-to-Children</ejb-relation-name>

<ejb-relationship-role >
<ejb-relationship-role-name>Child-has-one-parent</ejb-relationship-role-name>
<multiplicity>Many</multiplicity>
<relationship-role-source >
<ejb-name>CartDetail</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>Parent-has-many-Children</ejb-relationship-role-name>
<multiplicity>One</multiplicity>
<relationship-role-source >
<ejb-name>CartMaster</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>
</relationships>

<assembly-descriptor >
</assembly-descriptor>

</ejb-jar>
=========

jbosscmp-jdbc.xml:-
==========
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jbosscmp-jdbc PUBLIC "-//JBoss//DTD JBOSSCMP-JDBC 4.0//EN" "http://www.jboss.org/j2ee/dtd/jbosscmp-jdbc_4_0.dtd">

<jbosscmp-jdbc>
<defaults>
<datasource>java:/ProgressDS</datasource>
<datasource-mapping>PostgreSQL 8.0</datasource-mapping>
</defaults>

<enterprise-beans>
<entity>
<ejb-name>CartDetail</ejb-name>

<cmp-field>
<field-name>cartbeanid</field-name>
<column-name>cartid</column-name>

</cmp-field>
<cmp-field>
<field-name>cartbeandetailid</field-name>
<column-name>cartdetailid</column-name>

</cmp-field>
<cmp-field>
<field-name>partid</field-name>
<column-name>partid</column-name>

</cmp-field>
<cmp-field>
<field-name>quantity</field-name>
<column-name>quantity</column-name>

</cmp-field>
<cmp-field>
<field-name>unitprice</field-name>
<column-name>unitprice</column-name>
</cmp-field>
</entity>

<entity>
<ejb-name>CartMaster</ejb-name>

<cmp-field>
<field-name>cartdate</field-name>
<column-name>cartdate</column-name>

</cmp-field>
<cmp-field>
<field-name>cartbeanid</field-name>
<column-name>cartid</column-name>

</cmp-field>
<cmp-field>
<field-name>customerid</field-name>
<column-name>customerid</column-name>

</cmp-field>
<cmp-field>
<field-name>status</field-name>
<column-name>status</column-name>

</cmp-field>
<cmp-field>
<field-name>totalvalue</field-name>
<column-name>totalvalue</column-name>

</cmp-field>
</entity>

</enterprise-beans>

<relationships>
<ejb-relation>
<ejb-relation-name>Parent-to-Children</ejb-relation-name>

<ejb-relationship-role>
<ejb-relationship-role-name>Child-has-one-parent</ejb-relationship-role-name>
<key-fields>
<key-field>
<field-name>cartid</field-name>
<column-name>cartid</column-name>
</key-field>
</key-fields>

</ejb-relationship-role>
<ejb-relationship-role>
<ejb-relationship-role-name>Parent-has-many-Children</ejb-relationship-role-name>
<key-fields/>
</ejb-relationship-role>
</ejb-relation>
</relationships>
</jbosscmp-jdbc>
===========

I am using JBOSS4.0 App server. When I m trying to deploy beans I get folowing error message:-
===========
11:35:08,125 WARN [ServiceController] Problem starting service jboss.j2ee:jndiName=ejb/CartDetail,service=EJB
org.jboss.deployment.DeploymentException: Role: Child-has-one-parent with multiplicity many using foreign-key mapping is not allowed to have key-fields
at org.jboss.ejb.plugins.cmp.jdbc.metadata.JDBCRelationshipRoleMetaData.loadKeyFields(JDBCRelationshipRoleMetaData.java:406)
at org.jboss.ejb.plugins.cmp.jdbc.metadata.JDBCRelationshipRoleMetaData.init(JDBCRelationshipRoleMetaData.java:184)
===========


Pls tell me where I m going wrong? I am trying this example since last 2 days but not successful yet.
Please help me.

Thanx a lot in advance.

Prash


********Deserve Before You Desire********
Marco Antonio Reis
Greenhorn

Joined: Sep 26, 2005
Posts: 3
Quite simple, friend. Try adding this tag.

I hope its useful.


<relationships>
<ejb-relation>
<ejb-relation-name>Parent-to-Children</ejb-relation-name>
->>>> <foreign-key-mapping /> <<<<<-
<ejb-relationship-role>
<ejb-relationship-role-name>Child-has-one-parent</ejb-relationship-role-name>
<key-fields>
<key-field>
<field-name>cartid</field-name>
<column-name>cartid</column-name>
</key-field>
</key-fields>


TJDF - Tribunal de Justi´┐Ża do Distrito Federal<br />Software Architect<br />+55 61 8119 4620
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Error in EJB2.0 CMR Deployment
 
Similar Threads
EJB relations first time Q
jbosscmp-jdbc.xml nexus with ejb-jar.xml
Help me out for CMR deployment in CMP EJB......
Help me out for EJB2.0 CMR fields mapping in XDOCLET.......
CMR configuration confusion