Problema con JBoss+Lomboz+Eclipse+Oracle

jegutierrez
06 de Mayo del 2005
Me encuentro realizando una aplicacion con las herramientas antes mencionadas. Tengo un bean de entidad que usa el datasource de oracle 9i. y el mapeo para la tabla es el siguiente:

Notese que la llave primaria es de tipo number(5) y la he mapeado a un Integer o a un short de java.

<j2ee:display-name>Usuario</j2ee:display-name>
<j2ee:ejb-name>UsuarioBean</j2ee:ejb-name>
<j2ee:ejb-class>beans.cmp.UsuarioBean</j2ee:ejb-class>
<j2ee:persistence-type>Container</j2ee:persistence-type>
<j2ee:prim-key-class>java.lang.Integer</j2ee:prim-key-class>
<j2ee:cmp-version>2.x</j2ee:cmp-version>
<j2ee:abstract-schema-name>esquemaUsuario</j2ee:abstract-schema-name>
<j2ee:primkey-field>identificacion</j2ee:primkey-field>
</lomboz:entityEjb>
<lomboz:fieldMappings>
<lomboz:fieldName>nombre</lomboz:fieldName>
<lomboz:fieldType>java.lang.String</lomboz:fieldType>
<lomboz:columnName>Nombre</lomboz:columnName>
<lomboz:jdbcType>VARCHAR</lomboz:jdbcType>
<lomboz:sqlType>VARCHAR2</lomboz:sqlType>
<lomboz:readOnly>false</lomboz:readOnly>
<lomboz:primaryKey>false</lomboz:primaryKey>
</lomboz:fieldMappings>
<lomboz:fieldMappings>
<lomboz:fieldName>apellido</lomboz:fieldName>
<lomboz:fieldType>java.lang.String</lomboz:fieldType>
<lomboz:columnName>Apellido</lomboz:columnName>
<lomboz:jdbcType>VARCHAR</lomboz:jdbcType>
<lomboz:sqlType>VARCHAR2</lomboz:sqlType>
<lomboz:readOnly>false</lomboz:readOnly>
<lomboz:primaryKey>false</lomboz:primaryKey>
</lomboz:fieldMappings>
<lomboz:fieldMappings>
<lomboz:fieldName>username</lomboz:fieldName>
<lomboz:fieldType>java.lang.String</lomboz:fieldType>
<lomboz:columnName>Username</lomboz:columnName>
<lomboz:jdbcType>VARCHAR</lomboz:jdbcType>
<lomboz:sqlType>VARCHAR2</lomboz:sqlType>
<lomboz:readOnly>false</lomboz:readOnly>
<lomboz:primaryKey>false</lomboz:primaryKey>
</lomboz:fieldMappings>
<lomboz:fieldMappings>
<lomboz:fieldName>password</lomboz:fieldName>
<lomboz:fieldType>java.lang.String</lomboz:fieldType>
<lomboz:columnName>Password</lomboz:columnName>
<lomboz:jdbcType>VARCHAR</lomboz:jdbcType>
<lomboz:sqlType>VARCHAR2</lomboz:sqlType>
<lomboz:readOnly>false</lomboz:readOnly>
<lomboz:primaryKey>false</lomboz:primaryKey>
</lomboz:fieldMappings>
<lomboz:fieldMappings>
<lomboz:fieldName>rol</lomboz:fieldName>
<lomboz:fieldType>java.lang.String</lomboz:fieldType>
<lomboz:columnName>Rol</lomboz:columnName>
<lomboz:jdbcType>VARCHAR</lomboz:jdbcType>
<lomboz:sqlType>VARCHAR2</lomboz:sqlType>
<lomboz:readOnly>false</lomboz:readOnly>
<lomboz:primaryKey>false</lomboz:primaryKey>
</lomboz:fieldMappings>
<lomboz:fieldMappings>
<lomboz:fieldName>identificacion</lomboz:fieldName>
<lomboz:fieldType>java.lang.Integer</lomboz:fieldType>
<lomboz:columnName>Identificacion</lomboz:columnName>
<lomboz:jdbcType>NUMERIC</lomboz:jdbcType>
<lomboz:sqlType>NUMBER(5)</lomboz:sqlType>
<lomboz:readOnly>false</lomboz:readOnly>
<lomboz:primaryKey>true</lomboz:primaryKey>
</lomboz:fieldMappings>
<lomboz:tableName>Usuario</lomboz:tableName>
<lomboz:dataSourceName>jdbc/OracleDS</lomboz:dataSourceName>
</lomboz:entity>
</lomboz:EJB>
<!-- end-lomboz-definition -->
*
* <!-- begin-xdoclet-definition -->
* @ejb.bean name="Usuario"
* jndi-name="UsuarioBean"
* type="CMP"
* primkey-field="identificacion"
* schema="esquemaUsuario"
* cmp-version="2.x"
* data-source="jdbc/OracleDS"
*
* @ejb.persistence
* table-name="Usuario"
*
* @ejb.finder
* query="SELECT OBJECT(a) FROM esquemaUsuario as a"
* signature="java.util.Collection findAll()"
*
* @ejb.finder
* query="SELECT OBJECT(a) FROM esquemaUsuario a WHERE a.username = ?1 and a.password = ?1"
* signature="UsuarioData findLogin(java.lang.String Username, java.lang.String password)"

*
* @ejb.pk class="java.lang.Integer"
* <!-- end-xdoclet-definition -->
* @generated
**/
Si enbargo al llamar al metodo findByPrimaryKey(...) se genera una excepcion que empieza de la siguiente forma (no puse el Stack completo):

ERROR [Usuario#findByPrimaryKey] Find failed
java.lang.ClassCastException: java.lang.Integer
at oracle.jdbc.driver.OraclePreparedStatement.setObject(OraclePreparedStatement.java:2003)
at org.jboss.resource.adapter.jdbc.WrappedPreparedStatement.setObject(WrappedPreparedStatement.java:596)
at org.jboss.ejb.plugins.cmp.jdbc.JDBCParameterSetter$4.setNotNull(JDBCParameterSetter.java:117)
at org.jboss.ejb.plugins.cmp.jdbc.JDBCParameterSetter$JDBCAbstractParameterSetter.set(JDBCParameterSetter.java:56)
at org.jboss.ejb.plugins.cmp.jdbc.QueryParameter.set(QueryParameter.java:312)
at org.jboss.ejb.plugins.cmp.jdbc.JDBCAbstractQueryCommand.execute(JDBCAbstractQueryCommand.java:202)
at org.jboss.ejb.plugins.cmp.jdbc.JDBCAbstractQueryCommand.execute(JDBCAbstractQueryCommand.java:128)
at org.jboss.ejb.plugins.cmp.jdbc.JDBCFindByPrimaryKeyQuery.execute(JDBCFindByPrimaryKeyQuery.java:128)
at org.jboss.ejb.plugins.cmp.jdbc.JDBCFindEntityCommand.execute(JDBCFindEntityCommand.java:47)
at org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.findEntity(JDBCStoreManager.java:589)
at org.jboss.ejb.plugins.CMPPersistenceManager.findEntity(CMPPersistenceManager.java:300)
at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.findEntity(CachedConnectionInterceptor.java:298)
at org.jboss.ejb.EntityContainer.findSingleObject(EntityContainer.java:1086)
at org.jboss.ejb.EntityContainer.findLocal(EntityContainer.java:663)


He encontrado algunas excepciones similares en Internet donde dice que es un error de mapeo de Oracle.

Cualquier ayuda la agradeceria muchisimo...



<j2ee:display-name>Usuario</j2ee:display-name>
<j2ee:ejb-name>UsuarioBean</j2ee:ejb-name>
<j2ee:ejb-class>beans.cmp.UsuarioBean</j2ee:ejb-class>
<j2ee:persistence-type>Container</j2ee:persistence-type>
<j2ee:prim-key-class>java.lang.Integer</j2ee:prim-key-class>
<j2ee:cmp-version>2.x</j2ee:cmp-version>
<j2ee:abstract-schema-name>esquemaUsuario</j2ee:abstract-schema-name>
<j2ee:primkey-field>identificacion</j2ee:primkey-field>
</lomboz:entityEjb>
<lomboz:fieldMappings>
<lomboz:fieldName>nombre</lomboz:fieldName>
<lomboz:fieldType>java.lang.String</lomboz:fieldType>
<lomboz:columnName>Nombre</lomboz:columnName>
<lomboz:jdbcType>VARCHAR</lomboz:jdbcType>
<lomboz:sqlType>VARCHAR2</lomboz:sqlType>
<lomboz:readOnly>false</lomboz:readOnly>
<lomboz:primaryKey>false</lomboz:primaryKey>
</lomboz:fieldMappings>
<lomboz:fieldMappings>
<lomboz:fieldName>apellido</lomboz:fieldName>
<lomboz:fieldType>java.lang.String</lomboz:fieldType>
<lomboz:columnName>Apellido</lomboz:columnName>
<lomboz:jdbcType>VARCHAR</lomboz:jdbcType>
<lomboz:sqlType>VARCHAR2</lomboz:sqlType>
<lomboz:readOnly>false</lomboz:readOnly>
<lomboz:primaryKey>false</lomboz:primaryKey>
</lomboz:fieldMappings>
<lomboz:fieldMappings>
<lomboz:fieldName>username</lomboz:fieldName>
<lomboz:fieldType>java.lang.String</lomboz:fieldType>
<lomboz:columnName>Username</lomboz:columnName>
<lomboz:jdbcType>VARCHAR</lomboz:jdbcType>
<lomboz:sqlType>VARCHAR2</lomboz:sqlType>
<lomboz:readOnly>false</lomboz:readOnly>
<lomboz:primaryKey>false</lomboz:primaryKey>
</lomboz:fieldMappings>
<lomboz:fieldMappings>
<lomboz:fieldName>password</lomboz:fieldName>
<lomboz:fieldType>java.lang.String</lomboz:fieldType>
<lomboz:columnName>Password</lomboz:columnName>
<lomboz:jdbcType>VARCHAR</lomboz:jdbcType>
<lomboz:sqlType>VARCHAR2</lomboz:sqlType>
<lomboz:readOnly>false</lomboz:readOnly>
<lomboz:primaryKey>false</lomboz:primaryKey>
</lomboz:fieldMappings>
<lomboz:fieldMappings>
<lomboz:fieldName>rol</lomboz:fieldName>
<lomboz:fieldType>java.lang.String</lomboz:fieldType>
<lomboz:columnName>Rol</lomboz:columnName>
<lomboz:jdbcType>VARCHAR</lomboz:jdbcType>
<lomboz:sqlType>VARCHAR2</lomboz:sqlType>
<lomboz:readOnly>false</lomboz:readOnly>
<lomboz:primaryKey>false</lomboz:primaryKey>
</lomboz:fieldMappings>
<lomboz:fieldMappings>
<lomboz:fieldName>identificacion</lomboz:fieldName>
<lomboz:fieldType>java.lang.Integer</lomboz:fieldType>
<lomboz:columnName>Identificacion</lomboz:columnName>
<lomboz:jdbcType>NUMERIC</lomboz:jdbcType>
<lomboz:sqlType>NUMBER(5)</lomboz:sqlType>
<lomboz:readOnly>false</lomboz:readOnly>
<lomboz:primaryKey>true</lomboz:primaryKey>
</lomboz:fieldMappings>
<lomboz:tableName>Usuario</lomboz:tableName>
<lomboz:dataSourceName>jdbc/OracleDS</lomboz:dataSourceName>
</lomboz:entity>
</lomboz:EJB>
<!-- end-lomboz-definition -->
*
* <!-- begin-xdoclet-definition -->
* @ejb.bean name="Usuario"
* jndi-name="UsuarioBean"
* type="CMP"
* primkey-field="identificacion"
* schema="esquemaUsuario"
* cmp-version="2.x"
* data-source="jdbc/OracleDS"
*
* @ejb.persistence
* table-name="Usuario"
*
* @ejb.finder
* query="SELECT OBJECT(a) FROM esquemaUsuario as a"
* signature="java.util.Collection findAll()"
*
* @ejb.finder
* query="SELECT OBJECT(a) FROM esquemaUsuario a WHERE a.username = ?1 and a.password = ?1"
* signature="UsuarioData findLogin(java.lang.String Username, java.lang.String password)"

*
* @ejb.pk class="java.lang.Integer"
* <!-- end-xdoclet-definition -->
* @generated
**/