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