Weblogic to JBoss EJB-CMP doesnt work
antgod Mar 12, 2006 5:49 AMHi,
I am trying to deploy and existing web application from Weblogic to JBoss. I am now able to successfully deploy and run the main application, however when I try to do a save function, I get errors like this:
15:24:33,806 ERROR [AuftragDO] Could not create entity java.sql.SQLException: ORA-01400: cannot insert NULL into ("KSO_ANTGODE"."T_EC_AUFTRAG"."EKU_ID") ORA-06512: at line 1 at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112) at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331) at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288) at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:743) at oracle.jdbc.driver.T4CCallableStatement.doOall8(T4CCallableStatement.java:215) at oracle.jdbc.driver.T4CCallableStatement.executeForRows(T4CCallableStatement.java:954) at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1168) at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3285) at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3390) at oracle.jdbc.driver.OracleCallableStatement.execute(OracleCallableStatement.java:4223) at org.jboss.resource.adapter.jdbc.WrappedPreparedStatement.execute(WrappedPreparedStatement.java:183) at org.jboss.ejb.plugins.cmp.jdbc.keygen.JDBCOracleCreateCommand.executeInsert(JDBCOracleCreateCommand.java:83) at org.jboss.ejb.plugins.cmp.jdbc.JDBCAbstractCreateCommand.performInsert(JDBCAbstractCreateCommand.java:308) at org.jboss.ejb.plugins.cmp.jdbc.JDBCAbstractCreateCommand.execute(JDBCAbstractCreateCommand.java:138) at org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.createEntity(JDBCStoreManager.java:572) at org.jboss.ejb.plugins.CMPPersistenceManager.createEntity(CMPPersistenceManager.java:222) at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.createEntity(CachedConnectionInterceptor.java:219) at org.jboss.ejb.EntityContainer.createLocalHome(EntityContainer.java:612) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source)
I have searched and tried possible solutions, either in the deployment descriptor or in the code, but of no luck.
I am wondering if this has to do with the CMP/CMR fields I am using, in the above error, I always get a null for the foreign key - EKU_ID and it states that I cannot insert NULL.
Any idea how can I solve this?
Attached also is my ejb-jar.xml and jbosscmp-jdbc.xml..
ejb-jar.xml
<?xml version="1.0"?> <!DOCTYPE ejb-jar PUBLIC '-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN' 'http://java.sun.com/j2ee/dtds/ejb-jar_2_0.dtd'> <ejb-jar> <entity> <ejb-name>KundeDo</ejb-name> <local-home>de.dbsystems.spi.kso.dbo.kunde.KundeDoLocalHome</local-home> <local>de.dbsystems.spi.kso.dbo.kunde.KundeDoLocal</local> <ejb-class>de.dbsystems.spi.kso.dbo.kunde.KundeDoEB</ejb-class> <persistence-type>Container</persistence-type> <prim-key-class>java.lang.Long</prim-key-class> <reentrant>False</reentrant> <cmp-version>2.x</cmp-version> <abstract-schema-name>KundeDo</abstract-schema-name> <cmp-field> <field-name>id</field-name> </cmp-field> <cmp-field> <field-name>eDIPasswort</field-name> </cmp-field> <cmp-field> <field-name>eDIProvider</field-name> </cmp-field> <cmp-field> <field-name>eingangsbestaetigung</field-name> </cmp-field> <cmp-field> <field-name>partnerBvwNr</field-name> </cmp-field> <cmp-field> <field-name>partnerId</field-name> </cmp-field> <cmp-field> <field-name>partnerStandort</field-name> </cmp-field> <cmp-field> <field-name>user</field-name> </cmp-field> <cmp-field> <field-name>timestamp</field-name> </cmp-field> <primkey-field>id</primkey-field> <query> <query-method> <method-name>findAllKunden</method-name> <method-params></method-params> </query-method> <ejb-ql> <![CDATA[SELECT OBJECT(obj) FROM KundeDo AS obj]]> </ejb-ql> </query> <query> <query-method> <method-name>findByStandortname</method-name> <method-params> <method-param>java.lang.String</method-param> </method-params> </query-method> <ejb-ql> <![CDATA[SELECT OBJECT(obj) FROM KundeDo AS obj WHERE obj.partnerStandort LIKE ?1]]> </ejb-ql> </query> <query> <query-method> <method-name>findByStandortnummer</method-name> <method-params> <method-param>java.lang.String</method-param> </method-params> </query-method> <ejb-ql> <![CDATA[SELECT OBJECT(obj) FROM KundeDo AS obj WHERE obj.partnerId LIKE ?1]]> </ejb-ql> </query> <query> <query-method> <method-name>findByEdiProvider</method-name> <method-params> <method-param>java.lang.String</method-param> </method-params> </query-method> <ejb-ql> <![CDATA[SELECT OBJECT(obj) FROM KundeDo AS obj WHERE obj.eDIProvider LIKE ?1]]> </ejb-ql> </query> </entity> <entity> <ejb-name>AuftragDO</ejb-name> <local-home>de.dbsystems.spi.kso.dbo.auftrag.AuftragDOLocalHome</local-home> <local>de.dbsystems.spi.kso.dbo.auftrag.AuftragDOLocal</local> <ejb-class>de.dbsystems.spi.kso.dbo.auftrag.AuftragDOEB</ejb-class> <persistence-type>Container</persistence-type> <prim-key-class>java.lang.Long</prim-key-class> <reentrant>False</reentrant> <cmp-version>2.x</cmp-version> <abstract-schema-name>AuftragDO</abstract-schema-name> <cmp-field> <field-name>id</field-name> </cmp-field> . . . . . . . . . . . . <cmp-field> <field-name>user</field-name> </cmp-field> <cmp-field> <field-name>timestamp</field-name> </cmp-field> <primkey-field>id</primkey-field> </entity> <relationships> <assembly-descriptor> <ejb-relation> <ejb-relation-name>kunde-user</ejb-relation-name> <ejb-relationship-role> <ejb-relationship-role-name>UserDo.kunde</ejb-relationship-role-name> <multiplicity>Many</multiplicity> <relationship-role-source> <ejb-name>UserDo</ejb-name> </relationship-role-source> <cmr-field> <cmr-field-name>kunde</cmr-field-name> </cmr-field> </ejb-relationship-role> <ejb-relationship-role> <ejb-relationship-role-name>KundeDo.users</ejb-relationship-role-name> <multiplicity>One</multiplicity> <relationship-role-source> <ejb-name>KundeDo</ejb-name> </relationship-role-source> <cmr-field> <cmr-field-name>users</cmr-field-name> <cmr-field-type>java.util.Collection</cmr-field-type> </cmr-field> </ejb-relationship-role> </ejb-relation> <ejb-relation> <ejb-relation-name>kunde-auftraege</ejb-relation-name> <ejb-relationship-role> <ejb-relationship-role-name>AuftragDO.kunde</ejb-relationship-role-name> <multiplicity>Many</multiplicity> <relationship-role-source> <ejb-name>AuftragDO</ejb-name> </relationship-role-source> <cmr-field> <cmr-field-name>kunde</cmr-field-name> </cmr-field> </ejb-relationship-role> <ejb-relationship-role> <ejb-relationship-role-name>KundeDo.auftraege</ejb-relationship-role-name> <multiplicity>One</multiplicity> <relationship-role-source> <ejb-name>KundeDo</ejb-name> </relationship-role-source> <cmr-field> <cmr-field-name>auftraege</cmr-field-name> <cmr-field-type>java.util.Collection</cmr-field-type> </cmr-field> </ejb-relationship-role> </ejb-relation> <container-transaction> <method> <ejb-name>KundeDo</ejb-name> <method-name>*</method-name> </method> <method> <ejb-name>AuftragsvorlageDO</ejb-name> <method-name>*</method-name> </method> <method> <ejb-name>AuftragDO</ejb-name> <method-name>*</method-name> </method> </container-transaction> </assembly-descriptor> </ejb-jar>
this is my jbosscmp-jdbc.xml
<?xml version="1.0"?> <!DOCTYPE jbosscmp-jdbc PUBLIC "-//JBoss//DTD JBOSSCMP-JDBC 4.0//EN" "http://www.jboss.org/j2ee/dtd/jbosscmp-jdbc_4_0.dtd"> <jbosscmp-jdbc> <defaults> <!-- <datasource>jdbc.kso.MainTxDatasource</datasource> --> <datasource>java:/XAOracleDS</datasource> <datasource-mapping>Oracle9i</datasource-mapping> <create-table>false</create-table> <alter-table>false</alter-table> <remove-table>false</remove-table> <read-only>false</read-only> </defaults> <enterprise-beans> <entity> <ejb-name>KundeDo</ejb-name> <table-name>T_EC_KUNDE</table-name> <cmp-field> <field-name>id</field-name> <column-name>EKU_ID</column-name> </cmp-field> <cmp-field> <field-name>eDIPasswort</field-name> <column-name>EKU_EDI_PASSWORT</column-name> </cmp-field> <cmp-field> <field-name>eDIProvider</field-name> <column-name>EKU_EDI_PROVIDER</column-name> </cmp-field> <cmp-field> <field-name>eingangsbestaetigung</field-name> <column-name>EKU_ECBEST_CD</column-name> </cmp-field> <cmp-field> <field-name>partnerBvwNr</field-name> <column-name>EKU_PTN_BVW_NR</column-name> </cmp-field> <cmp-field> <field-name>partnerId</field-name> <column-name>EKU_PTN_ID</column-name> </cmp-field> <cmp-field> <field-name>partnerStandort</field-name> <column-name>EKU_PTN_BEZEICHNUNG</column-name> </cmp-field> <cmp-field> <field-name>user</field-name> <column-name>EKU_USER_ID</column-name> </cmp-field> <cmp-field> <field-name>timestamp</field-name> <column-name>EKU_TIMESTAMP</column-name> </cmp-field> <unknown-pk> <unknown-pk-class>java.lang.Long</unknown-pk-class> <field-name>id</field-name> <column-name>EKU_ID</column-name> <jdbc-type>BIGINT</jdbc-type> <sql-type>NUMBER(19)</sql-type> <auto-increment/> </unknown-pk> <entity-command name="oracle-sequence" class="org.jboss.ejb.plugins.cmp.jdbc.keygen.JDBCOracleCreateCommand"> <attribute name="sequence">S_EC_KUNDE</attribute> </entity-command> <optimistic-locking> <modified-strategy/> </optimistic-locking> </entity> <entity> <ejb-name>AuftragDO</ejb-name> <table-name>T_EC_AUFTRAG</table-name> <cmp-field> <field-name>id</field-name> <column-name>AFT_ID</column-name> </cmp-field> . . . . . . . . . . . . <cmp-field> <field-name>user</field-name> <column-name>AFT_USER_ID</column-name> </cmp-field> <cmp-field> <field-name>timestamp</field-name> <column-name>AFT_TIMESTAMP</column-name> </cmp-field> <unknown-pk> <unknown-pk-class>java.lang.Long</unknown-pk-class> <field-name>id</field-name> <column-name>AFT_ID</column-name> <jdbc-type>BIGINT</jdbc-type> <sql-type>NUMBER(19)</sql-type> <auto-increment/> </unknown-pk> <entity-command name="oracle-sequence" class="org.jboss.ejb.plugins.cmp.jdbc.keygen.JDBCOracleCreateCommand"> <attribute name="sequence">S_EC_AUFTRAG</attribute> </entity-command> <optimistic-locking> <modified-strategy/> </optimistic-locking> </entity> </enterprise-beans> <relationships> <ejb-relation> <ejb-relation-name>kunde-auftraege</ejb-relation-name> <foreign-key-mapping/> <ejb-relationship-role> <ejb-relationship-role-name>AuftragDO.kunde</ejb-relationship-role-name> </ejb-relationship-role> <ejb-relationship-role> <ejb-relationship-role-name>KundeDo.auftraege</ejb-relationship-role-name> <key-fields> <key-field> <field-name>id</field-name> <column-name>EKU_ID</column-name> </key-field> </key-fields> </ejb-relationship-role> </ejb-relation> </relationships> </jbosscmp-jdbc>
I am wondering if I missed out on anything during the migration or I did something incorrect.
Any help will be highly appreciated!
AntGod