Problem with CMR (1:1)
aragorn94 Feb 23, 2003 11:00 AMI have problem with CMR fields (no problem on deploy) : errors at runtime when calling setter or getter methods on a CMR field.
I tried to resolved the problem from other thread in forum but didn't find the trick (i think my deployment file are correct).
The relation is a 1:1 between a User en a UserInfo
The generated tables are :
user ( email, password, info)
userinfo ( infoid, dept, firstname, lastname, ...)
Here is the relation in ejb-jar.xml :
 <ejb-relation >
 <ejb-relation-name>UserHasUserInfo</ejb-relation-name>
 <!-- bidirectional -->
 <ejb-relationship-role >
 <ejb-relationship-role-name>UserHasUserInfo</ejb-relationship-role-name>
 One
 <relationship-role-source >
 <ejb-name>User</ejb-name>
 </relationship-role-source>
 <cmr-field >
 <cmr-field-name>userInfo</cmr-field-name>
 </cmr-field>
 </ejb-relationship-role>
 <ejb-relationship-role >
 <ejb-relationship-role-name>UserInfoPartOfUser</ejb-relationship-role-name>
 One
 <cascade-delete/>
 <relationship-role-source >
 <ejb-name>UserInfo</ejb-name>
 </relationship-role-source>
 </ejb-relationship-role>
 </ejb-relation>
Here is the relation in jbooscmp-jdbc.xml :
 <ejb-relation>
 <ejb-relation-name>UserHasUserInfo</ejb-relation-name>
 <foreign-key-mapping/>
 <ejb-relationship-role>
 <ejb-relationship-role-name>UserHasUserInfo</ejb-relationship-role-name>
 <key-fields/>
 </ejb-relationship-role>
 <ejb-relationship-role>
 <ejb-relationship-role-name>UserInfoPartOfUser</ejb-relationship-role-name>
 <key-fields>
 <key-field>
 <field-name>infoId</field-name>
 <column-name>info</column-name>
 </key-field>
 </key-fields>
 </ejb-relationship-role>
 </ejb-relation>
Source calling EJB :
User user = userHome.create(email, password);
UserInfo info = infoHome.create(firstName, middleName,
 lastName, email, dept, workPhone, extention,
 homePhone, isEmployee);
user.setUserInfo(info); // Here is the error
Beginning of trace :
17:05:26,259 ERROR [LogInterceptor] TransactionRolledbackException, causedBy:java.lang.ClassCastException
 at org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMRFieldBridge.setInstanceValue(JDBCCMRFieldBridge.java:551)
 at org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMRFieldBridge.setValue(JDBCCMRFieldBridge.java:483)
 at org.jboss.ejb.plugins.cmp.bridge.EntityBridgeInvocationHandler.invoke(EntityBridgeInvocationHandler.java:126)
 at org.jboss.proxy.compiler.Runtime.invoke(Runtime.java:59)
 at fr.free.banks.UserCMP$Proxy.setUserInfo()
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:324)
 at org.jboss.ejb.EntityContainer$ContainerInterceptor.invoke(EntityContainer.java:1194)
 at org.jboss.ejb.plugins.cmp.jdbc.JDBCRelationInterceptor.invoke(JDBCRelationInterceptor.java:95)
 at org.jboss.ejb.plugins.EntitySynchronizationInterceptor.invoke(EntitySynchronizationInterceptor.java:297)
 at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:186)
 at org.jboss.ejb.plugins.EntityReentranceInterceptor.invoke(EntityReentranceInterceptor.java:90)
 at org.jboss.ejb.plugins.EntityInstanceInterceptor.invoke(EntityInstanceInterceptor.java:163)
 at org.jboss.ejb.plugins.EntityLockInterceptor.invoke(EntityLockInterceptor.java:107)
 at org.jboss.ejb.plugins.EntityCreationInterceptor.invoke(EntityCreationInterceptor.java:69)
 at org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:107)
 at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:178)
 at org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:60)
 at org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:130)
 at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:204)
 at org.jboss.ejb.EntityContainer.invoke(EntityContainer.java:493)
 at org.jboss.ejb.Container.invoke(Container.java:712)
 at org.jboss.ejb.EntityContainer.invoke(EntityContainer.java:1058)
 at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:517)
 at org.jboss.invocation.local.LocalInvoker.invoke(LocalInvoker.java:98)
 at org.jboss.invocation.InvokerInterceptor.invoke(InvokerInterceptor.java:102)
 at org.jboss.proxy.TransactionInterceptor.invoke(TransactionInterceptor.java:77)
 at org.jboss.proxy.SecurityInterceptor.invoke(SecurityInterceptor.java:80)
 at org.jboss.proxy.ejb.EntityInterceptor.invoke(EntityInterceptor.java:116)
 at org.jboss.proxy.ClientContainer.invoke(ClientContainer.java:76)
 at $Proxy81.setUserInfo(Unknown Source)
 at fr.free.banks.UserManagementBean.addUser(UserManagementBean.java:94)
 
     
    