posted 21 years ago
Hi all!
I'm trying to develop a management app with Weblogic using EJB2.0. I
created some CM relations (many-to-many, many-to-one, etc.) with no
problems, but there is a one that gets the next problem at deployment time:
Error while reading 'META-INF/weblogic-cmp-rdbms-jar.xml'. The error
was:
In relationship 'Servicios-Contratados', role
'Servicios-de-un-contrato', invalid column 'nombre', a column-map element
contains an invalid key-column.The key-column is not defined in the related
bean or it's not recognized because of case mismatch.
In relationship 'Servicios-Contratados', role
'Contratos-que-usan-el-servicio', invalid column 'id', a column-map element
contains an invalid key-column. The key-column is not defined in the related
bean or it's not recognized because of case mismatch.
This is the ejb-jar.xml (a snippet):
<entity>
<display-name></display-name>
<ejb-name>ContratoBean</ejb-name>
<local-home>es.upm.dit.gestionabonados.ContratoLocalHome</local-home>
<local>es.upm.dit.gestionabonados.ContratoLocal</local>
<ejb-class>es.upm.dit.gestionabonados.ContratoBean</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>Contrato</abstract-schema-name>
<cmp-field>
<field-name>id</field-name>
</cmp-field>
<cmp-field>
<field-name>numeroCuenta</field-name>
</cmp-field>
<primkey-field>id</primkey-field>
</entity>
<entity>
<display-name></display-name>
<ejb-name>ServicioBean</ejb-name>
<local-home>es.upm.dit.gestionabonados.ServicioLocalHome</local-home>
<local>es.upm.dit.gestionabonados.ServicioLocal</local>
<ejb-class>es.upm.dit.gestionabonados.ServicioBean</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>Servicio</abstract-schema-name>
<cmp-field>
<field-name>nombre</field-name>
</cmp-field>
<cmp-field>
<field-name>url</field-name>
</cmp-field>
<cmp-field>
<field-name>precio</field-name>
</cmp-field>
<cmp-field>
<field-name>descripcion</field-name>
</cmp-field>
<primkey-field>nombre</primkey-field>
<query>
<query-method>
<method-name>findAllServicios</method-name>
<method-params/>
</query-method>
<ejb-ql>SELECT OBJECT(s) FROM Servicio s</ejb-ql>
</query>
</entity>
...
<ejb-relation>
<ejb-relation-name>Servicios-Contratados</ejb-relation-name>
<ejb-relationship-role>
<ejb-relationship-role-name>Servicios-de-un-contrato</ejb-relationship-role-
name>
<multiplicity>Many</multiplicity>
<relationship-role-source>
<ejb-name>ContratoBean</ejb-name>
</relationship-role-source>
<cmr-field>
<cmr-field-name>servicios</cmr-field-name>
<cmr-field-type>java.util.Collection</cmr-field-type>
</cmr-field>
</ejb-relationship-role>
<ejb-relationship-role>
<ejb-relationship-role-name>Contratos-que-usan-el-servicio</ejb-relationship
-role-name>
<multiplicity>Many</multiplicity>
<relationship-role-source>
<ejb-name>ServicioBean</ejb-name>
</relationship-role-source>
<cmr-field>
<cmr-field-name>contratos</cmr-field-name>
<cmr-field-type>java.util.Collection</cmr-field-type>
</cmr-field>
</ejb-relationship-role>
</ejb-relation>
...
and this is the weblogic-cmp-rdbms-jar.xml
...
<weblogic-rdbms-bean>
<ejb-name>ContratoBean</ejb-name>
<data-source-name>jdbc/es/upm/dit/gestionabonados/DataSource</data-source-na
me>
<table-name>Contrato</table-name>
<field-map>
<cmp-field>id</cmp-field>
<dbms-column>id</dbms-column>
</field-map>
<field-map>
<cmp-field>numeroCuenta</cmp-field>
<dbms-column>numerocuenta</dbms-column>
</field-map>
</weblogic-rdbms-bean>
<weblogic-rdbms-bean>
<ejb-name>ServicioBean</ejb-name>
<data-source-name>jdbc/es/upm/dit/gestionabonados/DataSource</data-source-na
me>
<table-name>Servicio</table-name>
<field-map>
<cmp-field>nombre</cmp-field>
<dbms-column>nombre</dbms-column>
</field-map>
<field-map>
<cmp-field>url</cmp-field>
<dbms-column>url</dbms-column>
</field-map>
<field-map>
<cmp-field>precio</cmp-field>
<dbms-column>precio</dbms-column>
</field-map>
<field-map>
<cmp-field>descripcion</cmp-field>
<dbms-column>descripcion</dbms-column>
</field-map>
</weblogic-rdbms-bean>
...
<weblogic-rdbms-relation>
<relation-name>Servicios-Contratados</relation-name>
<table-name>suscripcion</table-name>
<weblogic-relationship-role>
<relationship-role-name>Servicios-de-un-contrato</relationship-role-name>
<column-map>
<foreign-key-column>servicio</foreign-key-column>
<key-column>nombre</key-column>
</column-map>
</weblogic-relationship-role>
<weblogic-relationship-role>
<relationship-role-name>Contratos-que-usan-el-servicio</relationship-role-na
me>
<column-map>
<foreign-key-column>contrato</foreign-key-column>
<key-column>id</key-column>
</column-map>
</weblogic-relationship-role>
</weblogic-rdbms-relation>
...
I cann't find where is the problem, because this code is equals to the
other which work. Anybody could help me?
Thank in advance.