Delete Foreign Key Object
hustenbolschen Aug 19, 2004 5:40 AMHello,
I´m using JBOSS 3.23 with mysql
How can I prevent to delete the foreign key component when its still in use in the primary key object:
I have two Beans BEAN A and BEAN B
Both have an autoincrement ID
and the ID of Bean A shall be the foreign key of BEAN B.
This already works fine,
but I can still dlete Bean A when its used as foreign key in Bean B
How can I automatically prevent this?
And an easier question: How can I make the field BeanA_name a NOT NULL field?
<entity> <ejb-name>BeanAEJB</ejb-name> <local-home>liato.ejb.BeanAHomeLocal</local-home> <local>liato.ejb.BeanALocal</local> <ejb-class>liato.ejb.BeanABean</ejb-class> <persistence-type>Container</persistence-type> <prim-key-class>java.lang.Object</prim-key-class> <reentrant>False</reentrant> <cmp-version>2.x</cmp-version> <abstract-schema-name>BeanABean</abstract-schema-name> <cmp-field><field-name>BeanA_Name</field-name></cmp-field> <query> <query-method> <method-name>ejbSelectBeanAList</method-name> <method-params> </method-params> </query-method> <ejb-ql> SELECT OBJECT(o) FROM BeanABean AS o </ejb-ql> </query> </entity>
<entity> <ejb-name>BeanBEJB</ejb-name> <local-home>liato.ejb.BeanBHomeLocal</local-home> <local>liato.ejb.BeanBLocal</local> <ejb-class>liato.ejb.BeanBBean</ejb-class> <persistence-type>Container</persistence-type> <prim-key-class>java.lang.Object</prim-key-class> <reentrant>False</reentrant> <cmp-version>2.x</cmp-version> <abstract-schema-name>BeanBBean</abstract-schema-name> <cmp-field><field-name>BeanB_Name</field-name></cmp-field> <cmp-field><field-name>BeanA_Id</field-name></cmp-field> <ejb-local-ref > <ejb-ref-name>BeanALocalRef</ejb-ref-name> <ejb-ref-type>Entity</ejb-ref-type> <local-home>liato.ejb.BeanAHomeLocal</local-home> <local>liato.ejb.BeanALocal</local> <ejb-link>BeanA</ejb-link> </ejb-local-ref> </entity>
The relationship in the ejb.jar
<ejb-relation> <ejb-relation-name>BeanB-BeanA</ejb-relation-name> <ejb-relationship-role> <ejb-relationship-role-name>beanA-has-beanB</ejb-relationship-role-name> <multiplicity>Many</multiplicity> <relationship-role-source> <ejb-name>BeanBEJB</ejb-name> </relationship-role-source> <cmr-field> <cmr-field-name>BeanA</cmr-field-name> </cmr-field> </ejb-relationship-role> <ejb-relationship-role> <ejb-relationship-role-name>beanB-has-beanA</ejb-relationship-role-name> <multiplicity>One</multiplicity> <relationship-role-source> <ejb-name>BeanAEJB</ejb-name> </relationship-role-source> </ejb-relationship-role> </ejb-relation>
and the Jbosscmp-jdbc.xml
<jbosscmp-jdbc> <defaults> <datasource>java:/MySqlDS</datasource> <datasource-mapping>mySQL</datasource-mapping> <create-table>true</create-table> <remove-table>false</remove-table> <fk-constraint>true</fk-constraint> </defaults> <entity> <ejb-name>BeanAEJB</ejb-name> <table-name>BEANA</table-name> <cmp-field> <field-name>BeanA_Name</field-name> <column-name>BEANA_NAME</column-name> </cmp-field> <unknown-pk> <unknown-pk-class>java.lang.Integer</unknown-pk-class> <field-name>BeanA_Id</field-name> <column-name>BEANA_ID</column-name> <jdbc-type>INTEGER</jdbc-type> <sql-type>INT(11)</sql-type> <auto-increment/> </unknown-pk> <entity-command name="mysql-get-generated-keys" class="org.jboss.ejb.plugins.cmp.jdbc.keygen.JDBCMySQLCreateCommand"/> </entity> <entity> <ejb-name>BeanBEJB</ejb-name> <table-name>BEANB</table-name> <cmp-field> <field-name>BeanB_Name</field-name> <column-name>BEANB_NAME</column-name> </cmp-field> <cmp-field> <field-name>BeanB_Id</field-name> <column-name>BEANB_ID</column-name> </cmp-field> <unknown-pk> <unknown-pk-class>java.lang.Integer</unknown-pk-class> <field-name>BeanB_Id</field-name> <column-name>BEANB_ID</column-name> <jdbc-type>INTEGER</jdbc-type> <sql-type>INT(11)</sql-type> <auto-increment/> </unknown-pk> <entity-command name="mysql-get-generated-keys" class="org.jboss.ejb.plugins.cmp.jdbc.keygen.JDBCMySQLCreateCommand"/> </entity>
and the relationship in jbosscmp
<ejb-relation> <ejb-relation-name>BeanB-BeanA</ejb-relation-name> <foreign-key-mapping /> <ejb-relationship-role> <ejb-relationship-role-name>BeanA-has-BeanB</ejb-relationship-role-name> <fk-constraint>true</fk-constraint> <key-fields/> </ejb-relationship-role> <ejb-relationship-role> <ejb-relationship-role-name>BeanB-has-BeanA</ejb-relationship-role-name> <fk-constraint>true</fk-constraint> <key-fields> <key-field> <field-name>BeanA_Id</field-name> <column-name>BEANA_ID</column-name> </key-field> </key-fields> </ejb-relationship-role> </ejb-relation>