I have two entity-beans (AuthorBean, ImageBean) that should have a unidirectional one-to-one relation (Author-has-Image). I set it all up using Eclipse and XDoclet. After running XDoclet everything seems to be generated well, but it doesn't get deployed (on JBoss 4):
ERROR [EntityContainer] Starting failed jboss.j2ee:jndiName=ejb/ImageBeanHome,service=EJB org.jboss.deployment.DeploymentException: Entity: de.sbow.MSys.Images.ejb.ImageBean not found for relation: Author-Image Investigating the ejb-jar.xml and jbosscmp-jdbc.xml I found in jbosscmp-jdbc.xml the follwing: <ejb-relation> <ejb-relation-name>Author-Image</ejb-relation-name> <ejb-relationship-role> <ejb-relationship-role-name>Author-has-Image</ejb-relationship-role-name> <key-fields/> </ejb-relationship-role> <ejb-relationship-role> <ejb-relationship-role-name>Image-has-Author</ejb-relationship-role-name> <key-fields> <key-field> <field-name></field-name> <column-name></column-name> </key-field> </key-fields> </ejb-relationship-role> </ejb-relation> I wonder what I've done wrong? Thanks for any help Alexander AuthorBean.java package de.sbow.MSys.Authors.ejb; import java.util.Collection; import javax.ejb.CreateException; import javax.ejb.EJBException; import javax.ejb.EntityBean; import javax.ejb.EntityContext; import javax.ejb.RemoveException; import de.sbow.MSys.Authors.interfaces.AuthorBeanUtil; import de.sbow.MSys.Authors.value.AuthorBeanValue; import de.sbow.MSys.Images.ejb.ImageBean; import de.sbow.MSys.Images.interfaces.ImageBeanLocal; /** * * @ejb.bean name = "AuthorBean" * type = "CMP" * cmp-version = "2.x" * display-name = "AuthorBean" * description = "AuthorBean EJB" * view-type = "both" * jndi-name = "ejb/AuthorHome" * local-jndi-name = "ejb/AuthorLocalHome" * primkey-field = "id" * schema = "Authors" * * @ejb.persistence table-name = "Authors" * @jboss.persistence table-name = "Authors" * create-table = "true" * remove-table = "true" * * * @ejb.finder signature = "java.util.Collection findAll()" * query = "select Object(l) from Authors as l" * * @ejb.finder signature = "java.util.Collection findByName(java.lang.String name)" * query = "select Object(l) from Authors as l where l.name = ?1" * * @ejb.finder signature = "de.sbow.MSys.Authors.interfaces.AuthorBeanLocal findById(java.lang.String id)" * query = "select Object(l) from Authors as l where l.id = ?1" * * * @ejb.util * generate="physical" * * @ejb.value-object */ public abstract class AuthorBean implements EntityBean { /** The EntityContext */ private EntityContext context; /** * * @ejb.create-method */ public String ejbCreate() throws CreateException { this.setId(AuthorBeanUtil.generateGUID(this)); return null; } /** * @ejb.create-method * @param name * @param description * @return */ public String ejbCreate(String name, String description) throws CreateException { this.setName(name); this.setDescription(description); this.setId(AuthorBeanUtil.generateGUID(this)); return null; } /** * TODO check if this works! * @ejb.create-method * @param data * @return * @throws CreateException */ public String ejbCreate(AuthorBeanValue data) throws CreateException { this.setId(AuthorBeanUtil.generateGUID(this)); //data.setId(this.getId()); this.setAuthorBeanValue(data); return null; } /** * * @throws CreateException Thrown if the instance could not perform * the function requested by the container because of an system-level error. */ public void ejbPostCreate() throws CreateException { } /** * * @throws EJBException Thrown if the instance could not perform * the function requested by the container because of an system-level error. */ public void ejbActivate() throws EJBException { } /** * * @throws EJBException Thrown if the instance could not perform * the function requested by the container because of an system-level error. */ public void ejbPassivate() throws EJBException { } /** * * @throws EJBException Thrown if the instance could not perform * the function requested by the container because of an system-level error. */ public void ejbLoad() throws EJBException { } /** * * @throws EJBException Thrown if the instance could not perform * the function requested by the container because of an system-level error. */ public void ejbStore() throws EJBException { } /** * @throws EJBException Thrown if the instance could not perform * the function requested by the container because of an system-level error. * * @throws RemoveException Thrown if the enterprise bean does not allow destruction of the object. */ public void ejbRemove() throws EJBException, RemoveException { } /** * @throws EJBException Thrown if the instance could not perform * the function requested by the container because of an system-level error. */ public void setEntityContext(EntityContext newContext) throws EJBException { context = newContext; } /** * * @throws EJBException Thrown if the instance could not perform * the function requested by the container because of an system-level error. */ public void unsetEntityContext() throws EJBException { context = null; } /** * @ejb.interface-method view-type = "local" * @ejb.persistence column-name = "author_id" * @ejb.pk-field * @return */ public abstract String getId(); /** * @ejb.interface-method view-type = "local" * @param id */ public abstract void setId(String id); /** * @ejb.interface-method view-type = "local" * @ejb.persistence column-name = "name" * @return */ public abstract String getName(); /** * @ejb.interface-method view-type = "local" * * @param name */ public abstract void setName(String name); /** * @ejb.interface-method view-type = "local" * @ejb.persistence column-name = "description" * @return */ public abstract String getDescription(); /** * @ejb.interface-method view-type = "local" * * @param description */ public abstract void setDescription(String description); /** * @ejb.relation name = "Author-Image" * role-name = "Author-has-Image" * target-ejb = "de.sbow.MSys.Images.ejb.ImageBean" * target-role-name = "Image-has-Author" * * @jboss.relation * related-pk-field="image_id? * fk-column="image_fk? * fk-constraint = "true" * * * @ejb.interface-method view-type = "both" * @return */ public abstract ImageBeanLocal getImage(); /** * @ejb.interface-method view-type = "both" * @param image */ public abstract void setImage(ImageBeanLocal image); /** * @ejb:relation name = "MediaObject-Authors" * role-name = "Authors-has-MediaObjects" * cascade-delete = "false" * target-ejb = "de.sbow.MSys.MediaArchive.ejb.MediaObject" * target-role-name = "MediaObjects-has-Authors" * target-multiple = "yes" * * @jboss:relation-table table-name = "MediaObject2Author" * create-table = "true" * remove-table = "true" * * @jboss:relations-mapping style = "relation.table" * * @jboss:relation related-pk-field = "id" * fk-column = "author_id" * fk-constraint = "false" * * @return */ public abstract Collection getMediaObjects(); /** * @ejb:interface-method * @param mediaObjects * */ public abstract void setMediaObjects(Collection mediaObjects); /** * @ejb.interface-method view-type = "both" * * @return */ public abstract AuthorBeanValue getAuthorBeanValue(); /** * @ejb.interface-method view-type = "both" * @param data */ public abstract void setAuthorBeanValue(AuthorBeanValue data); } ImageBean.java package de.sbow.MSys.Images.ejb; import javax.ejb.CreateException; import javax.ejb.EJBException; import javax.ejb.EntityBean; import javax.ejb.EntityContext; import javax.ejb.RemoveException; import de.sbow.MSys.Images.interfaces.ImageBeanUtil; /** * @ejb.bean name = "ImageBean" * type = "CMP" * cmp-version = "2.x" * display-name = "ImageBean" * description = "ImageBean EJB" * view-type = "both" * jndi-name = "ejb/ImageBeanHome" * local-jndi-name = "ejb/ImageBeanLocalHome" * primkey-field = "id" * schema = "Images" * * @ejb.persistence table-name = "Images" * @jboss.persistence table-name = "Images" * create-table = "true" * remove-table = "true" * * * @ejb.finder signature = "java.util.Collection findAll()" * query = "select Object(l) from Images as l" * * @ejb.finder signature = "java.util.Collection findByName(java.lang.String name)" * query = "select Object(l) from Images as l where l.name = ?1" * * @ejb.finder signature = "de.sbow.MSys.Images.interfaces.ImageBeanLocal findById(java.lang.String id)" * query = "select Object(l) from Images as l where l.id = ?1" * * @ejb:util * generate="physical" * * @ejb.value-object */ public abstract class ImageBean implements EntityBean { /** The EntityContext */ private EntityContext context; /** * * @throws CreateException Thrown if the instance could not perform * the function requested by the container because of an system-level error. * * @ejb.create-method */ public String ejbCreate() throws CreateException { this.setId(ImageBeanUtil.generateGUID(this)); return null; } /** * * @throws CreateException Thrown if the instance could not perform * the function requested by the container because of an system-level error. */ public void ejbPostCreate() throws CreateException { } /** * * @throws EJBException Thrown if the instance could not perform * the function requested by the container because of an system-level error. */ public void ejbActivate() throws EJBException { } /** * @throws EJBException Thrown if the instance could not perform * the function requested by the container because of an system-level error. */ public void ejbPassivate() throws EJBException { } /** * @throws EJBException Thrown if the instance could not perform * the function requested by the container because of an system-level error. */ public void ejbLoad() throws EJBException { } /** * @throws EJBException Thrown if the instance could not perform * the function requested by the container because of an system-level error. */ public void ejbStore() throws EJBException { } /** * * @throws EJBException Thrown if the instance could not perform * the function requested by the container because of an system-level error. * * @throws RemoveException Thrown if the enterprise bean does not allow destruction of the object. */ public void ejbRemove() throws EJBException, RemoveException { } /** * * @throws EJBException Thrown if the instance could not perform * the function requested by the container because of an system-level error. */ public void setEntityContext(EntityContext newContext) throws EJBException { context = newContext; } /** * @throws EJBException Thrown if the instance could not perform * the function requested by the container because of an system-level error. */ public void unsetEntityContext() throws EJBException { context = null; } /** * @ejb.interface-method view-type = "local" * @ejb.persistence column-name = "image_id" * @ejb.pk-field * @return */ public abstract String getId(); /** * @ejb.interface-method view-type = "local" * @param id */ public abstract void setId(String id); /** * @ejb.interface-method view-type = "local" * @ejb.persistence column-name = "image" * @return */ public abstract byte[] getImage(); /** * @ejb.interface-method view-type = "local" * @param image */ public abstract void setImage(byte[] image); /** * @ejb.interface-method view-type = "local" * @ejb.persistence column-name = "type" * @return */ public abstract String getType(); /** * @ejb.interface-method view-type = "local" * @param type */ public abstract void setType(String type); /** * @ejb.interface-method view-type = "local" * @ejb.persistence column-name = "width" * @return */ public abstract int getWidth(); /** * @ejb.interface-method view-type = "local" * @param width */ public abstract void setWidth(int width); /** * @ejb.interface-method view-type = "local" * @ejb.persistence column-name = "height" * @return */ public abstract int getHeight(); /** * @ejb.interface-method view-type = "local" * @param height */ public abstract void setHeight(int height); /** * @ejb.interface-method view-type = "local" * @ejb.persistence column-name = "colors" * @return */ public abstract int getColors(); /** * @ejb.interface-method view-type = "local" * @param int */ public abstract void setColors(int colors); } View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=3858510#3858510 Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=3858510 ------------------------------------------------------- SF email is sponsored by - The IT Product Guide Read honest & candid reviews on hundreds of IT Products from real users. Discover which products truly live up to the hype. Start reading now. http://productguide.itmanagersjournal.com/ _______________________________________________ JBoss-user mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/jboss-user