If you are using CMP 2.0, then check the following: 1. Make sure your relationships are correctly setup between Quote and QuoteParner using the ejb-relation attributes 2. It's not clear why you are passing the key of Quote to the QuotePartner, you should just pass Quote as in vPartnerHome.create( (Quote) entityContext.getEJBObject() ); 3. Then in the QuotePartner.ejbCreate(Quote quote) you would configure the CMR field with setQuote(quote) 4. You would of course need to have CMR fields and prototypes defined in QuotePartnet as abstract void setQuote(Quote quote); and abstract Quote getQuote();
-AP_ -----Original Message----- From: A mailing list for Enterprise JavaBeans development [mailto:[EMAIL PROTECTED]]On Behalf Of Julio Cesar Macavilca Sent: Thursday, January 24, 2002 3:27 PM To: [EMAIL PROTECTED] Subject: Ejb parent-child integrity constraint problem : creation I have table Quote (parent) and table QuotePartner (child), relationship 1-to-1, managed as CMP using ejb 2.0 on a WebLogic Server. The problem is that a need to maintain relation 1-to-1, it means when a Quote is created, inmediately I create QuotePartner on method ejbPostCreate(), but it seems that first create child on database before insert parent, because a database integrity constrint is fired. I disabled that contraint and it works, but I wondering a way to implement this withou disable database constraint. Any idea or coments will be gratefully received Thanks in advance QuoteBean.java code: public java.math.BigDecimal ejbCreate() throws CreateException { BigDecimal vQuotePK = ....// autogenerated ID managed by my own code this.setQuoteid( vQuotePK ); // set parent id } public void ejbPostCreate() throws CreateException { System.out.println("QuoteBean.ejbPostCreate"); // create QuotePartner QuotepartnerHome vPartnerHome = null; try{ System.out.println("QuoteBean.ejbPostCreate creating Context"); javax.naming.Context context = new javax.naming.InitialContext(); System.out.println("QuoteBean.ejbPostCreate look home"); vPartnerHome =(QuotepartnerHome)context.lookup("Quotepartner");; }catch(javax.naming.NamingException e){ System.out.println("QuoteBean.ejbPostCreate Error :"+ e.getExplanation()); e.printStackTrace(System.out); throw new javax.ejb.EJBException( e.getMessage() ); } BigDecimal vQuotePK = this.getQuoteid(); // get parent Id System.out.println("QuoteBean.ejbPostCreate creating QuotePartner"); Quotepartner vPartner = vPartnerHome.create(vQuotePK ); //create child } Error: java.rmi.RemoteException: EJB Exception:; nested exception is: javax.ejb.TransactionRolledbackLocalException: EJB Exception: - with nested exception: [java.sql.SQLException: ORA-02291: integrity constraint (JMACAVILCA.SYS_C00306834) violated - parent key not found ] Start server side stack trace: java.rmi.RemoteException: EJB Exception:; nested exception is: javax.ejb.TransactionRolledbackLocalException: EJB Exception: - with nested exception: [java.sql.SQLException: ORA-02291: integrity constraint (JMACAVILCA.SYS_C00306834) violated - parent key not found ] java.sql.SQLException: ORA-02291: integrity constraint (JMACAVILCA.SYS_C00306834) violated - parent key not found at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:168) at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:208) at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:543) at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1405) at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteFetch(TTC7Protocol.java:822) at oracle.jdbc.driver.OracleStatement.executeNonQuery(OracleStatement.java:1446 ) at oracle.jdbc.driver.OracleStatement.doExecuteOther(OracleStatement.java:1371) at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java :1900) at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedState ment.java:363) at weblogic.jdbc.pool.Statement.executeUpdate(Statement.java:293) at weblogic.jdbc.rmi.internal.PreparedStatementImpl.executeUpdate(PreparedState mentImpl.java:64) at weblogic.jdbc.rmi.SerialPreparedStatement.executeUpdate(SerialPreparedStatem ent.java:58) at com.transi.ejb.Quotepartner_rihass__WebLogic_CMP_RDBMS.__WL_create(Quotepart ner_rihass__WebLogic_CMP_RDBMS.java:2981) at com.transi.ejb.Quotepartner_rihass__WebLogic_CMP_RDBMS.ejbPostCreate(Quotepa rtner_rihass__WebLogic_CMP_RDBMS.java:2825) at java.lang.reflect.Method.invoke(Native Method) at weblogic.ejb20.manager.DBManager.create(DBManager.java:583) at weblogic.ejb20.manager.DBManager.localCreate(DBManager.java:471) at weblogic.ejb20.internal.EntityEJBLocalHome.create(EntityEJBLocalHome.java:16 7) at com.transi.ejb.QuotepartnerBean_rihass_LocalHomeImpl.create(QuotepartnerBean _rihass_LocalHomeImpl.java:118) at com.transi.ejb.QuoteBean.ejbPostCreate(QuoteBean.java:64) at com.transi.ejb.Quote_1aoeos__WebLogic_CMP_RDBMS.ejbPostCreate(Quote_1aoeos__ WebLogic_CMP_RDBMS.java:3189) at java.lang.reflect.Method.invoke(Native Method) at weblogic.ejb20.manager.DBManager.create(DBManager.java:583) at weblogic.ejb20.manager.DBManager.remoteCreate(DBManager.java:462) at weblogic.ejb20.internal.EntityEJBHome.create(EntityEJBHome.java:190) at com.transi.ejb.QuoteBean_1aoeos_HomeImpl.create(QuoteBean_1aoeos_HomeImpl.ja va:107) at com.transi.ejb.QuoteBean_1aoeos_HomeImpl_WLSkel.invoke(Unknown Source) at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:296) at weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerRef.java :93) at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:265) at weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:2 2) at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139) at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120) =========================================================================== To unsubscribe, send email to [EMAIL PROTECTED] and include in the body of the message "signoff EJB-INTEREST". For general help, send email to [EMAIL PROTECTED] and include in the body of the message "help". =========================================================================== To unsubscribe, send email to [EMAIL PROTECTED] and include in the body of the message "signoff EJB-INTEREST". For general help, send email to [EMAIL PROTECTED] and include in the body of the message "help".
