[jboss-user] [Persistence, JBoss/CMP, Hibernate, Database] - Re: relationships in jbosscmp-jdbc.xml

paoletto do-not-reply at jboss.com
Sun Jun 10 05:46:55 EDT 2007


ok. i tried but i get a weird error. I followed jboss 3.2.7 developer guide.

the error is this:

  | 12:35:25,352 ERROR [Account#findRelatedAccounts] Find failed
  | java.sql.SQLException: Colonna non trovata: T0_A.DEPARTMENT in statement [SELECT t0_a.utente FROM DIPARTIMENTO t1_d, ACCOUNT t0_a WHERE ((t1_d.descrizione = ?)) AND t1_d.idDipartimento=t0_a.department]
  | 

it's weird because i mapped idDipartimento to dipartimento, not department. department should only be the cmr field :/

now my entities are:

  |     <entity >
  |          <description><![CDATA[Description for Account]]></description>
  |          <display-name>Entity Bean relativa agli Account di accesso</display-name>
  | 
  |          <ejb-name>Account</ejb-name>
  | 
  |          <local-home>servizioDipartimentale.interfaces.AccountLocalHome</local-home>
  |          <local>servizioDipartimentale.interfaces.AccountLocal</local>
  | 
  |          <ejb-class>servizioDipartimentale.ejb.AccountBean</ejb-class>
  |          <persistence-type>Container</persistence-type>
  |          <prim-key-class>java.lang.String</prim-key-class>
  |          <reentrant>False</reentrant>
  |          <cmp-version>2.x</cmp-version>
  |          <abstract-schema-name>Account</abstract-schema-name>
  |          <cmp-field >
  |             <description><![CDATA[Getter for CMP Field utente]]></description>
  |             <field-name>utente</field-name>
  |          </cmp-field>
  |          <cmp-field >
  |             <description><![CDATA[Getter for CMP Field pwd]]></description>
  |             <field-name>pwd</field-name>
  |          </cmp-field>
  |          <cmp-field >
  |             <description><![CDATA[Getter for CMP Field cognome]]></description>
  |             <field-name>cognome</field-name>
  |          </cmp-field>
  |          <cmp-field >
  |             <description><![CDATA[Getter for CMP Field nome]]></description>
  |             <field-name>nome</field-name>
  |          </cmp-field>
  |          <cmp-field >
  |             <description><![CDATA[Getter for CMP Field ruolo]]></description>
  |             <field-name>ruolo</field-name>
  |          </cmp-field>
  |          <cmp-field >
  |             <description><![CDATA[Getter for CMP Field tipo]]></description>
  |             <field-name>tipo</field-name>
  |          </cmp-field>
  |          <cmp-field >
  |             <description><![CDATA[Getter for CMP Field dipartimento]]></description>
  |             <field-name>dipartimento</field-name>
  |          </cmp-field>
  |          <primkey-field>utente</primkey-field>
  | 
  |          <query>
  |             <query-method>
  |                <method-name>findAll</method-name>
  |                <method-params>
  |                </method-params>
  |             </query-method>
  |             <ejb-ql><![CDATA[SELECT OBJECT(a) FROM Account AS a]]></ejb-ql>
  |          </query>
  |          
  |          <query>
  |             <query-method>
  |                <method-name>findRelatedAccounts</method-name>
  |                <method-params>
  |                <method-param>java.lang.String</method-param>
  |                </method-params>
  |             </query-method>
  |             <ejb-ql><![CDATA[SELECT OBJECT(a) FROM Dipartimento AS d, IN (d.accounts) as a WHERE d.descrizione = ?1]]></ejb-ql>
  |         	<!--ejb-ql><![CDATA[SELECT OBJECT(a) FROM Account AS a WHERE a.Dipartimento.Descrizione = 'DIPARTIMENTO DI FISICA']]></ejb-ql-->
  |          </query>  
  | 
  |       </entity>
  | 
  |       <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>
  |                           
  | 	  <!-- Write a file named ejb-finders-DipartimentoBean.xml if you want to define extra finders. -->
  | 
  |       </entity>
  | 

relationship

  |    <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>
  |         <cmr-field>
  |           <cmr-field-name>department</cmr-field-name>
  |         </cmr-field>
  |       </ejb-relationship-role>
  |     </ejb-relation>
  | 

and in jbosscmp-jdbc

  |     <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>
  |              <key-field>
  |                <field-name>idDocumento</field-name>
  |                <column-name>documento</column-name>
  |              </key-field>
  |           </key-fields>		
  |       </ejb-relationship-role>
  |       
  |       <ejb-relationship-role>
  |           <ejb-relationship-role-name>Account-belongs-to-department</ejb-relationship-role-name>
  | 		  <key-fields/>
  |       </ejb-relationship-role>
  |     </ejb-relation>
  | 

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4052884#4052884

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4052884



More information about the jboss-user mailing list