This is not really an answer to your question but get a close look to
Middlegen. It allows you to generate Entity beans with Xdoclet tags based on
a DB schema

This could be a good example to understand how to do it manually

Regards,

Stéphane



-----Original Message-----
From:   Steven Nakhla [mailto:[EMAIL PROTECTED]
Sent:   Fri 11/7/2003 23:47
To:     [EMAIL PROTECTED]
Cc:     
Subject:        [JBoss-user] CMR problems -- Newbie
I am trying to get started with EJB on JBoss, particularly creating
container-managed EJBs.  I am using JBoss 3.2.2 and MySQL on the backend.  I
have two simple beans, Employee and Address.  I would like to establish a CMR
between the two so that an Employee bean can call the function
setAddress(Address a) and have an address associated with it.  This should be
a uni-directional one-to-one relationship.  I've tried several different ways
to create this bean (manual class creation, XDoclet, etc.) but keep getting
exceptions.  Here are the two beans I've created with the relevant XDoclet
tags:
 
 
/**

* @ejb.bean name="Employee"

* jndi-name="EmployeeBean"

* type="CMP"

* primkey-field="employeeID"

* schema="MyEmployee" 

* cmp-version="2.x"

* 

* @ejb.persistence 

* table-name="employee" 

* 

* @ejb.finder 

* query="SELECT OBJECT(a) FROM MyEmployee as a" 

* signature="java.util.Collection findAll()" 

* 

**/

public abstract class EmployeeBean implements EntityBean {
 <more stuff here>

/**

* @ejb.interface-method

* 

* @ejb.relation

* name = "employee-address"

* role-name = "employeeHasAddress"

* cascade-delete = "yes"

* target-ejb = "Address"

* target-role-name = "AddressBelongsToEmployee"

* 

* @jboss.relation

* fk-constraint = "true"

* related-pk-field = "addressID"

* fk-column = "addressID"

* 

* @author SDNakhla

*

*/

public abstract Address getAddress();



/**

* @ejb.interface-method

*/

public abstract void setAddress(Address address);

}

However, when I call the setAddress() function, I get a long list of
exceptions.  The address information is created properly in the database, as
is the employee information.  However, in the employee table the address_id
field (a foreign key, corresponding to the primary key of the address) is
null.  Below is the stack trace I'm receiving.  Can anyone tell me what it is
I'm doing wrong and why this exception is occurring?  I've been working on
this for two weeks and have made no progress.  Thanks in advance!!

Steve Nakhla

 

java.rmi.ServerException: RemoteException occurred in server thread; nested
exception is: 

java.rmi.ServerException: EJBException:; nested exception is: 

javax.ejb.EJBException: null; CausedByException is:

null

at sun.rmi.server.UnicastServerRef.dispatch(Unknown Source)

at sun.rmi.transport.Transport$1.run(Unknown Source)

at java.security.AccessController.doPrivileged(Native Method)

at sun.rmi.transport.Transport.serviceCall(Unknown Source)

at sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source)

at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Source)

at java.lang.Thread.run(Unknown Source)

at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(Unknown
Source)

at sun.rmi.transport.StreamRemoteCall.executeCall(Unknown Source)

at sun.rmi.server.UnicastRef.invoke(Unknown Source)

at org.jboss.invocation.jrmp.server.JRMPInvoker_Stub.invoke(Unknown Source)

at
org.jboss.invocation.jrmp.interfaces.JRMPInvokerProxy.invoke(JRMPInvokerProxy
.java:135)

at org.jboss.invocation.InvokerInterceptor.invoke(InvokerInterceptor.java:96)

at
org.jboss.proxy.TransactionInterceptor.invoke(TransactionInterceptor.java:46)

at org.jboss.proxy.SecurityInterceptor.invoke(SecurityInterceptor.java:45)

at org.jboss.proxy.ejb.EntityInterceptor.invoke(EntityInterceptor.java:97)

at org.jboss.proxy.ClientContainer.invoke(ClientContainer.java:85)

at $Proxy3.setAddress(Unknown Source)

at ejb.addressbook.AddressBookClient.testBean(AddressBookClient.java:76)

at ejb.addressbook.AddressBookClient.main(AddressBookClient.java:90)

Caused by: java.rmi.ServerException: EJBException:; nested exception is: 

javax.ejb.EJBException: null; CausedByException is:

null

at
org.jboss.ejb.plugins.LogInterceptor.handleException(LogInterceptor.java:347)

at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:195)

at
org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinder
Interceptor.java:122)

at org.jboss.ejb.EntityContainer.internalInvoke(EntityContainer.java:490)

at org.jboss.ejb.Container.invoke(Container.java:700)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

at java.lang.reflect.Method.invoke(Unknown Source)

at
org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBeanDispatc
her.java:284)

at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:546)

at org.jboss.invocation.jrmp.server.JRMPInvoker.invoke(JRMPInvoker.java:367)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

at java.lang.reflect.Method.invoke(Unknown Source)

at sun.rmi.server.UnicastServerRef.dispatch(Unknown Source)

at sun.rmi.transport.Transport$1.run(Unknown Source)

at java.security.AccessController.doPrivileged(Native Method)

at sun.rmi.transport.Transport.serviceCall(Unknown Source)

at sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source)

at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Source)

at java.lang.Thread.run(Unknown Source)

Caused by: javax.ejb.EJBException: null; CausedByException is:

null

at
org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMRFieldBridge.setInstanceValue(JDB
CCMRFieldBridge.java:745)

at
org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMRFieldBridge.setValue(JDBCCMRFiel
dBridge.java:590)

at
org.jboss.ejb.plugins.cmp.bridge.EntityBridgeInvocationHandler.invoke(EntityB
ridgeInvocationHandler.java:121)

at org.jboss.proxy.compiler.Runtime.invoke(Runtime.java:59)

at ejb.addressbook.EmployeeCMP$Proxy.setAddress(<generated>)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

at java.lang.reflect.Method.invoke(Unknown Source)

at
org.jboss.ejb.EntityContainer$ContainerInterceptor.invoke(EntityContainer.jav
a:1095)

at
org.jboss.ejb.plugins.cmp.jdbc.JDBCRelationInterceptor.invoke(JDBCRelationInt
erceptor.java:71)

at
org.jboss.ejb.plugins.EntitySynchronizationInterceptor.invoke(EntitySynchroni
zationInterceptor.java:277)

at
org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(Cache
dConnectionInterceptor.java:185)

at
org.jboss.ejb.plugins.EntityReentranceInterceptor.invoke(EntityReentranceInte
rceptor.java:114)

at
org.jboss.ejb.plugins.EntityInstanceInterceptor.invoke(EntityInstanceIntercep
tor.java:163)

at
org.jboss.ejb.plugins.EntityLockInterceptor.invoke(EntityLockInterceptor.java
:89)

at
org.jboss.ejb.plugins.EntityCreationInterceptor.invoke(EntityCreationIntercep
tor.java:54)

at
org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.
java:84)

at
org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.j
ava:267)

at org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:128)

at
org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:118
)

at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:191)

... 21 more

 




---------------------------------
Do you Yahoo!?
Protect your identity with Yahoo! Mail AddressGuard


<<winmail.dat>>

Reply via email to