xdoclet 1 to Many relationship @jboss:relation tag
rramirez Aug 11, 2002 12:58 PMI'm having problems getting a one to many relationship to work and I'm using xdoclet to generate the code. I can't seem to get the ejb:relation and @jboss:relation working.
Here's the info:
I have 2 tables Account and Address. An account has many addresses and here's the table definition:
Account(accountId,email,name,passcode,....)
Address(addressId,accountId,addrType,line1,line2,city,state,zip)
Account.accountId and Address.addressId are primary keys.
Address.accountId references Account.accountId.
The following is from the AccountBean:
Here's the ejb:bean info:
* @ejb:bean name="andrea/AccountBean"
* display-name="The Account Bean"
* type="CMP"
* jndi-name="ejb/andrea/Account"
* local-jndi-name="ejb/andrea/AccountLocal"
* view-type="both"
* schema="Account"
Here's the getter's
/**
* @return Returns the accountId
*
* @ejb:persistent-field
* @ejb:pk-field
*
* @jboss:column-name name="accountId"
* @jboss:sql-type INTEGER
* @jboss:jdbc-type INTEGER
*/
public abstract Integer getId();
/**
* @return Returns the email address for this account.
*
* @ejb:persistent-field
*
* @jboss:column-name name="email"
* @jboss:sql-type VARCHAR(80)
* @jboss:jdbc-type VARCHAR
*/
public abstract String getEmail();
/**
* @return Returns the passcode for this account
*
* @ejb:persistent-field
*
* @jboss:column-name name="passcode"
* @jboss:sql-type VARCHAR(40)
* @jboss:jdbc-type VARCHAR
*/
public abstract String getPasscode();
Here's the relationship I'm trying to use
/**
* @ejb:interface-method view-type="both"
*
* @ejb:relation name="Account-Address"
* role-name="Account-Has-Many-Addresses"
* target-role-name="Address-Has-One-Account"
* target-ejb="andrea/AddressBean"
* cascade-delete="no"
*
* @jboss:relation fk-constraint="false"
* related-pk-field="id"
* fk-column="accountId"
*
*/
public abstract java.util.Collection getAddresses();
/**
* @ejb:interface-method view-type="both"
*/
public abstract void setAddresses(java.util.Set addresses);
============================================================================================
The following is from the address:
Here's the ejb:bean info:
* The Address bean. Holds address information for accounts.
* @ejb:bean name="andrea/AddressBean"
* display-name="The Address Bean"
* type="CMP"
* jndi-name="ejb/andrea/Address"
* local-jndi-name="ejb/andrea/AddressLocal"
* view-type="both"
* schema="Address"
Here's the getter info
/**
* @return The key identifying the Address
* @ejb:persistent-field
* @ejb:pk-field
*
* @jboss:column-name name="addressId"
* @jboss:sql-type INTEGER
* @jboss:jdbc-type INTEGER
*/
public abstract Integer getId();
/**
* @return The key identifying the account
* @ejb:persistent-field
*
* @jboss:column-name name="accountId"
* @jboss:sql-type INTEGER
* @jboss:jdbc-type INTEGER
*/
public abstract Integer getAccountId();
/**
* @return The type of address
* @ejb:persistent-field
*
* @jboss:column-name name="addrType"
* @jboss:sql-type VARCHAR(2)
* @jboss:jdbc-type VARCHAR
*/
public abstract String getType();
/**
* @return The first line of the address field
* @ejb:persistent-field
*
* @jboss:column-name name="line1"
* @jboss:sql-type VARCHAR(30)
* @jboss:jdbc-type VARCHAR
*/
public abstract String getLine1();
/**
* @return The second line of the address field. This is optional
* @ejb:persistent-field
*
* @jboss:column-name name="line2"
* @jboss:sql-type VARCHAR(30)
* @jboss:jdbc-type VARCHAR
*/
public abstract String getLine2();
/**
* @return The city of the address field.
* @ejb:persistent-field
*
* @jboss:column-name name="city"
* @jboss:sql-type VARCHAR(30)
* @jboss:jdbc-type VARCHAR
*/
public abstract String getCity();
/**
* @return The state
* @ejb:persistent-field
*
* @jboss:column-name name="state"
* @jboss:sql-type VARCHAR(2)
* @jboss:jdbc-type VARCHAR
*/
public abstract String getState();
/**
* @return The zip code
* @ejb:persistent-field
*
* @jboss:column-name name="zip"
* @jboss:sql-type VARCHAR(10)
* @jboss:jdbc-type VARCHAR
*/
public abstract String getZip();
Any help would be greatly appreciated.
Thanks,
Ruben