[jboss-user] [Persistence, JBoss/CMP, Hibernate, Database] - Re: relationships in jbosscmp-jdbc.xml
paoletto
do-not-reply at jboss.com
Fri Jun 8 15:10:21 EDT 2007
ok, i tried but clearly i'm making some mistake.
i tried to define a CMR field for entity Document that references "many" accounts, and i added in both bean and localhome interface the getters and setters for this CMR field named "account" in the <ejb-relation>.
I also added the block into jbosscmp-jdbc.xml and a join query.
Here's the code:
ejb-jar.xml
| [...]
| <entity >
| <description><![CDATA[Description for Dipartimento]]></description>
| <display-name>Name for Dipartimento</display-name>
|
| <ejb-name>Dipartimento</ejb-name>
|
| <local-home>servizioDipartimentale.interfaces.DipartimentoLocalHome</local-home>
| <local>servizioDipartimentale.interfaces.DipartimentoLocal</local>
|
| <ejb-class>servizioDipartimentale.ejb.DipartimentoBean</ejb-class>
| <persistence-type>Container</persistence-type>
| <prim-key-class>java.lang.Integer</prim-key-class>
| <reentrant>False</reentrant>
| <cmp-version>2.x</cmp-version>
| <abstract-schema-name>Dipartimento</abstract-schema-name>
| <cmp-field >
| <description><![CDATA[Getter for CMP Field idDipartimento]]></description>
| <field-name>IdDipartimento</field-name>
| </cmp-field>
| <cmp-field >
| <description><![CDATA[Getter for CMP Field Descrizione]]></description>
| <field-name>Descrizione</field-name>
| </cmp-field>
| <primkey-field>IdDipartimento</primkey-field>
|
| <query>
| <query-method>
| <method-name>findAll</method-name>
| <method-params>
| </method-params>
| </query-method>
| <ejb-ql><![CDATA[SELECT OBJECT(a) FROM Dipartimento AS a]]></ejb-ql>
| </query>
|
| <query>
| <query-method>
| <method-name>findRelatedAccounts</method-name>
| <method-params></method-params>
| </query-method>
| <ejb-ql><![CDATA[SELECT OBJECT(a) FROM Dipartimento AS d, IN (d.Accounts) as a WHERE d.descrizione = 'DIPARTIMENTO DI FISICA']]></ejb-ql>
| <!-- ejb-ql><![CDATA[SELECT OBJECT(a) FROM Account AS a WHERE a.Dipartimento.Descrizione = 'DIPARTIMENTO DI FISICA']]></ejb-ql-->
| </query>
| </entity>
| [...]
| <relationships>
|
| <ejb-relation>
| <ejb-relation-name>Dipartimento-Account</ejb-relation-name>
| <ejb-relationship-role>
| <ejb-relationship-role-name>Department-has-accounts</ejb-relationship-role-name>
| <multiplicity>One</multiplicity>
| <relationship-role-source>
| <ejb-name>Dipartimento</ejb-name>
| </relationship-role-source>
| <cmr-field>
| <cmr-field-name>Accounts</cmr-field-name>
| <!-- cmr-field-type>java.util.Collection</cmr-field-type-->
| </cmr-field>
| </ejb-relationship-role>
| <ejb-relationship-role>
| <ejb-relationship-role-name>Account-belongs-to-department</ejb-relationship-role-name>
| <multiplicity>Many</multiplicity>
| <cascade-delete/>
| <relationship-role-source>
| <ejb-name>Account</ejb-name>
| </relationship-role-source>
| </ejb-relationship-role>
| </ejb-relation>
|
jbosscmp-jdbc.xml
| [...]
| <entity>
| <ejb-name>Dipartimento</ejb-name>
| <create-table>true</create-table>
| <remove-table>true</remove-table>
| <table-name>DIPARTIMENTO</table-name>
|
| <cmp-field><field-name>idDipartimento</field-name></cmp-field>
| <cmp-field><field-name>descrizione</field-name></cmp-field>
|
| </entity>
| [...]
| <relationships>
| <ejb-relation>
| <ejb-relation-name>Dipartimento-Account</ejb-relation-name>
| <foreign-key-mapping/>
|
| <ejb-relationship-role>
| <ejb-relationship-role-name>Department-has-accounts</ejb-relationship-role-name>
| <key-fields/>
| </ejb-relationship-role>
|
| <ejb-relationship-role>
| <ejb-relationship-role-name>Account-belongs-to-department</ejb-relationship-role-name>
| <key-fields>
| <key-field>
| <field-name>dipartimento</field-name>
| <column-name>idDocumento</column-name>
| </key-field>
| </key-fields>
| </ejb-relationship-role>
| </ejb-relation>
|
and the error trying to deploy the application:
Finder findRelatedAccounts defined on Dipartimento should return only instances of Dipartimento but the query results in instances of Account
so should i put it in Account bean? but then the relationship? how to change it in bidirectional way?
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4052717#4052717
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4052717
More information about the jboss-user
mailing list