Dear XDoclet experts,

 

after mastering the creation of 1:N relations with Xdoclet (eclipse /
lomboz / Jboss 3.07) I would like to use the generated EJBs through
Value Objects. As a prototype case I have Customers each of which can
have N Projects.

 

What works:

+ Create EJBs and Value Objects

+ Access and create Customers through Value Objects

+ Create set / getProjects for Customer and CustomerValue

 

What does not work:

+ Create properly functioning set / getCustomer for Project

+ Create set / getCustomer for Project Value

 

I guess what's behind is to correctly assign the relationship and FK /
PK definition on the Project Bean side with the corresponding getters /
setters. I tried different variants (e.g. with set / getCustomerNumber
which is the FK colum) but they did not work.

 

 

Here is my sourcecode for the CUSTOMER BEAN:

 

/**

 * @ejb.bean name="Customer"

 *    jndi-name="CustomerBean"

 *  local-jndi-name="CustomerBeanLocal"

 *    type="CMP"

 *  primkey-field="number"

 *  schema="myCustomerSchema" 

 *  cmp-version="2.x"

 * 

 * @ejb.persistence 

 *  table-name="customer" 

 * 

 * @ejb.finder 

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

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

 *  

 * @ejb.value-object

 *   name="Customer"

 *   match="*"

 * 

 */

 

public abstract class CustomerBean implements EntityBean {

 

      /**

       * The  ejbCreate method.

       * 

       * @ejb.create-method 

       */

      public java.lang.Integer ejbCreate(String name) throws
javax.ejb.CreateException

      {

...

      }

 

      /**

       * The container invokes this method immediately after it calls
ejbCreate.

       * 

       */

      public void ejbPostCreate(String name) throws
javax.ejb.CreateException

      {

      }

 

      /**

      * Returns the number

      * @return the number

      * 

      * @ejb.persistent-field 

      * @ejb.persistence

      *    column-name="number"

      *     sql-type="int"

      * @ejb.pk-field

      * @ejb.interface-method

      */

      public abstract java.lang.Integer getNumber();

 

      /**

      * Sets the number

      * 

      * @param java.lang.Integer the new number value

      * 

      * @ejb.interface-method

      */

      public abstract void setNumber(java.lang.Integer number);

 

... (other getters / setters)

 

      /**

      * Defines the relation to 0..N projects.

      * 

      * @ejb.relation

      *  name="Customer-Projects"

      *  role-name="customer-has-projects"

      * 

      * @ejb.value-object

      *  compose="neo.pps.model.projects.ProjectValue"

      *  compose-name="ProjectValue"

      *  members="neo.pps.model.projects.ProjectLocal"

      *  members-name="Project"

      *  relation="external"

      *  type="Collection"

      * 

      * @ejb.interface-method view-type="local"

      */

      public abstract Collection getProjects();

      /**

      * 

      * @ejb.interface-method view-type="local"

      */

      public abstract void setProjects(Collection projects);

      /**

      * 

      * @ejb.interface-method

      */

      public abstract CustomerValue getCustomerValue();

      /**

      * 

      * @ejb.interface-method

      */

      public abstract void setCustomerValue(CustomerValue value);

 

 

... and for the PROJECT BEAN:

 

public abstract class ProjectBean implements EntityBean {

 

      /**

       * The  ejbCreate method.

       * 

       * @ejb.create-method 

       */

      public java.lang.Integer ejbCreate(String name) throws
javax.ejb.CreateException

{

...

      }

 

      /**

       * The container invokes this method immediately after it calls
ejbCreate.

       * 

       */

      public void ejbPostCreate(String name) throws
javax.ejb.CreateException {

      }

 

      /**

       * The  ejbCreate method.

       * 

       * @ejb.create-method

       *  view-type="local"

       */

      public java.lang.Integer ejbCreate(ProjectValue value) throws
javax.ejb.CreateException {

            return null;

      }

 

      /**

       * The container invokes this method immediately after it calls
ejbCreate.

       * 

       */

      public void ejbPostCreate(ProjectValue value) throws
javax.ejb.CreateException {

      }

 

      /**

      * Returns the number

      * @return the number

      * 

      * @ejb.persistent-field 

      * @ejb.persistence

      *    column-name="number"

      *     sql-type="int"

      * @ejb.pk-field 

      * @ejb.interface-method

      */

      public abstract java.lang.Integer getNumber();

 

      /**

      * Sets the number

      * 

      * @param java.lang.Integer the new number value

      * 

      * @ejb.interface-method

      */

      public abstract void setNumber(java.lang.Integer number);

 

... (other getters / setters)

 

      /**

      * Defines the relation to 1 customer.

      * 

      * @ejb.relation

      *  name="Customer-Projects"

      *  role-name="project-belongs-to-one-customer"

      *  cascade-delete="yes"

      * 

      * @jboss.relation 

      *  fk-column="customerNumber"

      *  related-pk-field="number"

      * 

      * @ejb.interface-method view-type="local"

      */

      public abstract CustomerBean getCustomer();

      /**

      * 

      * @ejb.interface-method view-type="local"

      */

      public abstract void setCustomer(CustomerBean customer);

      /**

      * 

      * @ejb.interface-method

      */

      public abstract ProjectValue getProjectValue();

      /**

      * 

      * @ejb.interface-method

      */

      public abstract void setProjectValue(ProjectValue value);

}

 

Anyone can help or forward a working sample?

 

Thanks and Greetings

Arvin Arora

 

NEO Business Partners GmbH

 

FON +49 (0) 511 123 549 - 0

FAX  +49 (0) 511 123 549 - 49

Mobil +49 (0) 172 51 56 300

 

eMail: mailto:[EMAIL PROTECTED]
<mailto:[EMAIL PROTECTED]> 

Website: http://www.NEO-Partners.com <http://www.neo-partners.com/> 

 

 



-------------------------------------------------------
This SF.Net email sponsored by: Free pre-built ASP.NET sites including
Data Reports, E-commerce, Portals, and Forums are available now.
Download today and enter to win an XBOX or Visual Studio .NET.
http://aspnet.click-url.com/go/psa00100006ave/direct;at.asp_061203_01/01
_______________________________________________
xdoclet-user mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/xdoclet-user

Reply via email to