cmp2 one to many relation problem
enerjet Oct 11, 2002 5:59 AMI'm using jboss-3.0.0_tomcat-4.0.3 in win2000.
There are two tables named company and contact,the relation between them are one to many.
Here is the jbosscmp-jdbc.xml:
<?xml version="1.0" encoding="UTF-8"?>
<jbosscmp-jdbc>
java:/OracleDS
<datasource-mapping>Oracle8</datasource-mapping>
<enterprise-beans>
<ejb-name>Contact</ejb-name>
<table-name>CONTACT</table-name>
<ejb-designer-id>Contact</ejb-designer-id>
<cmp-field>
<field-name>contactid</field-name>
<column-name>CONTACTID</column-name>
</cmp-field>
<cmp-field>
<field-name>companyid</field-name>
<column-name>COMPANYID</column-name>
</cmp-field>
<cmp-field>
<field-name>firstname</field-name>
<column-name>FIRSTNAME</column-name>
</cmp-field>
<cmp-field>
<field-name>midname</field-name>
<column-name>MIDNAME</column-name>
</cmp-field>
<cmp-field>
<field-name>lastname</field-name>
<column-name>LASTNAME</column-name>
</cmp-field>
<cmp-field>
<field-name>sex</field-name>
<column-name>SEX</column-name>
</cmp-field>
<cmp-field>
<field-name>title</field-name>
<column-name>TITLE</column-name>
</cmp-field>
<cmp-field>
<field-name>workphone</field-name>
<column-name>WORKPHONE</column-name>
</cmp-field>
<cmp-field>
<field-name>cellphone</field-name>
<column-name>CELLPHONE</column-name>
</cmp-field>
<cmp-field>
<field-name>homephone</field-name>
<column-name>HOMEPHONE</column-name>
</cmp-field>
<cmp-field>
<field-name>fax</field-name>
<column-name>FAX</column-name>
</cmp-field>
<cmp-field>
<field-name>email</field-name>
<column-name>EMAIL</column-name>
</cmp-field>
<cmp-field>
<field-name>password</field-name>
<column-name>PASSWORD</column-name>
</cmp-field>
<cmp-field>
<field-name>role</field-name>
<column-name>ROLE</column-name>
</cmp-field>
<ejb-name>Company</ejb-name>
<table-name>COMPANY</table-name>
<ejb-designer-id>Company</ejb-designer-id>
<cmp-field>
<field-name>companyid</field-name>
<column-name>COMPANYID</column-name>
</cmp-field>
<cmp-field>
<field-name>companyname</field-name>
<column-name>COMPANYNAME</column-name>
</cmp-field>
<cmp-field>
<field-name>type</field-name>
<column-name>TYPE</column-name>
</cmp-field>
<cmp-field>
<field-name>taxid</field-name>
<column-name>TAXID</column-name>
</cmp-field>
<cmp-field>
<field-name>status</field-name>
<column-name>STATUS</column-name>
</cmp-field>
<cmp-field>
<field-name>rank</field-name>
<column-name>RANK</column-name>
</cmp-field>
<cmp-field>
<field-name>phone</field-name>
<column-name>PHONE</column-name>
</cmp-field>
<cmp-field>
<field-name>fax</field-name>
<column-name>FAX</column-name>
</cmp-field>
<cmp-field>
<field-name>website</field-name>
<column-name>WEBSITE</column-name>
</cmp-field>
<cmp-field>
<field-name>tradecurrency</field-name>
<column-name>TRADECURRENCY</column-name>
</cmp-field>
<cmp-field>
<field-name>parentid</field-name>
<column-name>PARENTID</column-name>
</cmp-field>
<cmp-field>
<field-name>invaliddate</field-name>
<column-name>INVALIDDATE</column-name>
</cmp-field>
<cmp-field>
<field-name>password</field-name>
<column-name>PASSWORD</column-name>
</cmp-field>
<cmp-field>
<field-name>bank</field-name>
<column-name>BANK</column-name>
</cmp-field>
<cmp-field>
<field-name>accounts</field-name>
<column-name>ACCOUNTS</column-name>
</cmp-field>
<cmp-field>
<field-name>credit</field-name>
<column-name>CREDIT</column-name>
</cmp-field>
</enterprise-beans>
<ejb-relation>
<ejb-relation-name>company-contact</ejb-relation-name>
<foreign-key-mapping />
<ejb-relationship-role>
<ejb-relationship-role-name>CompanyContactRelationshipRole</ejb-relationship-role-name>
<key-fields>
<key-field>
<field-name>companyid</field-name>
<column-name>COMPANYID</column-name>
</key-field>
</key-fields>
<ejb-designer-id>Company</ejb-designer-id>
</ejb-relationship-role>
<ejb-relationship-role>
<ejb-relationship-role-name>ContactCompanyRelationshipRole</ejb-relationship-role-name>
</ejb-relationship-role>
</ejb-relation>
</jbosscmp-jdbc>
ejb-jar.xml:
<ejb-jar>
<enterprise-beans>
<display-name>Contact</display-name>
<ejb-name>Contact</ejb-name>
<local-home>com.eview.scm.components.company.contact.ejb.ContactLocalHome</local-home>
com.eview.scm.components.company.contact.ejb.ContactLocal
<ejb-class>com.eview.scm.components.company.contact.ejb.ContactBean</ejb-class>
<persistence-type>Container</persistence-type>
<prim-key-class>java.lang.String</prim-key-class>
False
<abstract-schema-name>Contact</abstract-schema-name>
<cmp-field>
<field-name>contactid</field-name>
</cmp-field>
<cmp-field>
<field-name>companyid</field-name>
</cmp-field>
<cmp-field>
<field-name>firstname</field-name>
</cmp-field>
<cmp-field>
<field-name>midname</field-name>
</cmp-field>
<cmp-field>
<field-name>lastname</field-name>
</cmp-field>
<cmp-field>
<field-name>sex</field-name>
</cmp-field>
<cmp-field>
<field-name>title</field-name>
</cmp-field>
<cmp-field>
<field-name>workphone</field-name>
</cmp-field>
<cmp-field>
<field-name>cellphone</field-name>
</cmp-field>
<cmp-field>
<field-name>homephone</field-name>
</cmp-field>
<cmp-field>
<field-name>fax</field-name>
</cmp-field>
<cmp-field>
<field-name>email</field-name>
</cmp-field>
<cmp-field>
<field-name>password</field-name>
</cmp-field>
<cmp-field>
<field-name>role</field-name>
</cmp-field>
<primkey-field>contactid</primkey-field>
<display-name>Company</display-name>
<ejb-name>Company</ejb-name>
<local-home>com.eview.scm.components.company.ejb.CompanyLocalHome</local-home>
com.eview.scm.components.company.ejb.CompanyLocal
<ejb-class>com.eview.scm.components.company.ejb.CompanyBean</ejb-class>
<persistence-type>Container</persistence-type>
<prim-key-class>java.lang.String</prim-key-class>
False
<cmp-version>2.x</cmp-version>
<abstract-schema-name>Company</abstract-schema-name>
<cmp-field>
<field-name>companyid</field-name>
</cmp-field>
<cmp-field>
<field-name>companyname</field-name>
</cmp-field>
<cmp-field>
<field-name>type</field-name>
</cmp-field>
<cmp-field>
<field-name>taxid</field-name>
</cmp-field>
<cmp-field>
<field-name>status</field-name>
</cmp-field>
<cmp-field>
<field-name>rank</field-name>
</cmp-field>
<cmp-field>
<field-name>phone</field-name>
</cmp-field>
<cmp-field>
<field-name>fax</field-name>
</cmp-field>
<cmp-field>
<field-name>website</field-name>
</cmp-field>
<cmp-field>
<field-name>tradecurrency</field-name>
</cmp-field>
<cmp-field>
<field-name>parentid</field-name>
</cmp-field>
<cmp-field>
<field-name>invaliddate</field-name>
</cmp-field>
<cmp-field>
<field-name>password</field-name>
</cmp-field>
<cmp-field>
<field-name>bank</field-name>
</cmp-field>
<cmp-field>
<field-name>accounts</field-name>
</cmp-field>
<cmp-field>
<field-name>credit</field-name>
</cmp-field>
<primkey-field>companyid</primkey-field>
<ejb-local-ref>
<ejb-ref-name>ejb/local/Contact</ejb-ref-name>
<ejb-ref-type>Entity</ejb-ref-type>
<local-home>com.eview.scm.components.company.contact.ejb.ContactLocalHome</local-home>
com.eview.scm.components.company.contact.ejb.ContactLocal
<ejb-link>Contact</ejb-link>
</ejb-local-ref>
</enterprise-beans>
<ejb-relation>
<ejb-relation-name>company-contact</ejb-relation-name>
<ejb-relationship-role>
company
<ejb-relationship-role-name>CompanyContactRelationshipRole</ejb-relationship-role-name>
One
<relationship-role-source>
company
<ejb-name>Company</ejb-name>
</relationship-role-source>
<cmr-field>
contact
<cmr-field-name>contact</cmr-field-name>
</cmr-field>
</ejb-relationship-role>
<ejb-relationship-role>
contact
<ejb-relationship-role-name>ContactCompanyRelationshipRole</ejb-relationship-role-name>
Many
<relationship-role-source>
contact
<ejb-name>Contact</ejb-name>
</relationship-role-source>
</ejb-relationship-role>
</ejb-relation>
<assembly-descriptor>
<container-transaction>
<ejb-name>Contact</ejb-name>
<method-name>*</method-name>
<trans-attribute>Required</trans-attribute>
</container-transaction>
<container-transaction>
<ejb-name>Company</ejb-name>
<method-name>*</method-name>
<trans-attribute>Required</trans-attribute>
</container-transaction>
</assembly-descriptor>
</ejb-jar>
And my question is:
Can I use the code list below to insert into company and contact in one transaction?
abstract public class CompanyBean implements EntityBean {
EntityContext entityContext;
public java.lang.String ejbCreate(java.lang.String companyid, java.lang.String companyname, java.lang.String type, java.lang.String taxid, java.lang.String status, java.lang.String rank, java.lang.String phone, java.lang.String fax, java.lang.String website, java.lang.String tradecurrency, java.lang.String parentid, java.lang.String invaliddate, java.lang.String password, java.lang.String bank, java.lang.String accounts, java.math.BigDecimal credit, java.util.Collection contact) throws CreateException {
setCompanyid(companyid);
setCompanyname(companyname);
setType(type);
setTaxid(taxid);
setStatus(status);
setRank(rank);
setPhone(phone);
setFax(fax);
setWebsite(website);
setTradecurrency(tradecurrency);
setParentid(parentid);
setInvaliddate(invaliddate);
setPassword(password);
setBank(bank);
setAccounts(accounts);
setCredit(credit);
return null;
}
public void ejbPostCreate(java.lang.String companyid, java.lang.String companyname, java.lang.String type, java.lang.String taxid, java.lang.String status, java.lang.String rank, java.lang.String phone, java.lang.String fax, java.lang.String website, java.lang.String tradecurrency, java.lang.String parentid, java.lang.String invaliddate, java.lang.String password, java.lang.String bank, java.lang.String accounts, java.math.BigDecimal credit, java.util.Collection contact) throws CreateException {
this.setContact(contact);
}
public void ejbRemove() throws RemoveException {
/**@todo Complete this method*/
}
public abstract void setCompanyid(java.lang.String companyid);
public abstract void setCompanyname(java.lang.String companyname);
public abstract void setType(java.lang.String type);
public abstract void setTaxid(java.lang.String taxid);
public abstract void setStatus(java.lang.String status);
public abstract void setRank(java.lang.String rank);
public abstract void setPhone(java.lang.String phone);
public abstract void setFax(java.lang.String fax);
public abstract void setWebsite(java.lang.String website);
public abstract void setTradecurrency(java.lang.String tradecurrency);
public abstract void setParentid(java.lang.String parentid);
public abstract void setInvaliddate(java.lang.String invaliddate);
public abstract void setPassword(java.lang.String password);
public abstract void setBank(java.lang.String bank);
public abstract void setAccounts(java.lang.String accounts);
public abstract void setCredit(java.math.BigDecimal credit);
public abstract void setContact(java.util.Collection contact);
public abstract java.lang.String getCompanyid();
public abstract java.lang.String getCompanyname();
public abstract java.lang.String getType();
public abstract java.lang.String getTaxid();
public abstract java.lang.String getStatus();
public abstract java.lang.String getRank();
public abstract java.lang.String getPhone();
public abstract java.lang.String getFax();
public abstract java.lang.String getWebsite();
public abstract java.lang.String getTradecurrency();
public abstract java.lang.String getParentid();
public abstract java.lang.String getInvaliddate();
public abstract java.lang.String getPassword();
public abstract java.lang.String getBank();
public abstract java.lang.String getAccounts();
public abstract java.math.BigDecimal getCredit();
public abstract java.util.Collection getContact();
public void ejbLoad() {
/**@todo Complete this method*/
}
public void ejbStore() {
/**@todo Complete this method*/
}
public void ejbActivate() {
/**@todo Complete this method*/
}
public void ejbPassivate() {
/**@todo Complete this method*/
}
public void unsetEntityContext() {
this.entityContext = null;
}
public void setEntityContext(EntityContext entityContext)
{
this.entityContext = entityContext;
}
}