[ 
https://issues.apache.org/jira/browse/GERONIMO-3907?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12577846#action_12577846
 ] 

Ralf Baumhof commented on GERONIMO-3907:
----------------------------------------

More over. Two nearly identical situations. In both cases the insert fails 
because of invalid foreign keys. In both cases the persist method first does 
not throw an exception. But in the first case (the working case) there are some 
additional inserts and updates which may force that the data is written to 
database a little bit earlier. In this case the exception is visible and 
catchable at the level of the service fassace. In the second case (the case 
described above) it is not visible - neither at the service fassade, nor at the 
JSF bean. 

This works (the exception can be caught at the service fassade):
javax.ejb.EJBTransactionRolledbackException: The transaction has been marked 
rollback only because the bean encountered a non-application exception 
:javax.ejb.EJBTransactionRolledbackException : The transaction has been marked 
rollback only because the bean encountered a non-application exception 
:org.apache.openjpa.persistence.PersistenceException : The transaction has been 
rolled back.  See the nested exceptions for details on the errors that occurred.
        at 
org.apache.openejb.core.ivm.BaseEjbProxyHandler.convertException(BaseEjbProxyHandler.java:348)
        at 
org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:323)
        at 
org.apache.openejb.util.proxy.Jdk13InvocationHandler.invoke(Jdk13InvocationHandler.java:49)
        at $Proxy97.anlegenSchuldnerEintrag(Unknown Source)
        at 
de.nrw.hagen.ggrz.vesuv.schuldner.services.SchuldnerServiceManagerImpl.AnlegenSchuldnerJuristischePersonZSV(SchuldnerServiceManagerImpl.java:49)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at 
org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:146)
        at 
org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:129)
        at 
org.apache.openejb.core.interceptor.InterceptorStack.invoke(InterceptorStack.java:67)
        at 
org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:210)
        at 
org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:188)
        at 
org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:165)
        at 
org.apache.openejb.core.ivm.EjbObjectProxyHandler.businessMethod(EjbObjectProxyHandler.java:217)
        at 
org.apache.openejb.core.ivm.EjbObjectProxyHandler._invoke(EjbObjectProxyHandler.java:77)
        at 
org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:321)
        at 
org.apache.openejb.util.proxy.Jdk13InvocationHandler.invoke(Jdk13InvocationHandler.java:49)
        at $Proxy96.AnlegenSchuldnerJuristischePersonZSV(Unknown Source)
        at 
de.nrw.hagen.ggrz.vesuv.schuldner.controler.SRegControlerBean.anlegenJPerson(SRegControlerBean.java:115)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at org.apache.el.parser.AstValue.invoke(AstValue.java:131)
        at 
org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
        at 
org.apache.jasper.el.JspMethodExpression.invoke(JspMethodExpression.java:68)
        at 
javax.faces.component._MethodExpressionToMethodBinding.invoke(_MethodExpressionToMethodBinding.java:75)
        at 
org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:54)
        at javax.faces.component.UICommand.broadcast(UICommand.java:121)
        at 
javax.faces.component.UIViewRoot._broadcastForPhase(UIViewRoot.java:292)
        at javax.faces.component.UIViewRoot.process(UIViewRoot.java:209)
        at 
javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:117)
        at 
org.apache.myfaces.lifecycle.InvokeApplicationExecutor.execute(InvokeApplicationExecutor.java:32)
        at 
org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:103)
        at 
org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:76)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:148)
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
        at 
org.apache.geronimo.tomcat.valve.DefaultSubjectValve.invoke(DefaultSubjectValve.java:56)
        at 
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525)
        at 
org.apache.geronimo.tomcat.GeronimoStandardContext$SystemMethodValve.invoke(GeronimoStandardContext.java:396)
        at 
org.apache.geronimo.tomcat.valve.GeronimoBeforeAfterValve.invoke(GeronimoBeforeAfterValve.java:47)
        at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
        at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at 
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563)
        at 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
        at 
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
        at 
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
        at 
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
        at java.lang.Thread.run(Thread.java:595)
Caused by: javax.ejb.EJBTransactionRolledbackException: The transaction has 
been marked rollback only because the bean encountered a non-application 
exception :org.apache.openjpa.persistence.PersistenceException : The 
transaction has been rolled back.  See the nested exceptions for details on the 
errors that occurred.
        at 
org.apache.openejb.core.ivm.BaseEjbProxyHandler.convertException(BaseEjbProxyHandler.java:348)
        at 
org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:323)
        at 
org.apache.openejb.util.proxy.Jdk13InvocationHandler.invoke(Jdk13InvocationHandler.java:49)
        at $Proxy101.anlegenPerson(Unknown Source)
        at 
de.nrw.hagen.ggrz.vesuv.schuldner.SchuldnerEintragManagerImpl.anlegenSchuldnerEintrag(SchuldnerEintragManagerImpl.java:37)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at 
org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:146)
        at 
org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:129)
        at 
org.apache.openejb.core.interceptor.InterceptorStack.invoke(InterceptorStack.java:67)
        at 
org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:210)
        at 
org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:188)
        at 
org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:165)
        at 
org.apache.openejb.core.ivm.EjbObjectProxyHandler.businessMethod(EjbObjectProxyHandler.java:217)
        at 
org.apache.openejb.core.ivm.EjbObjectProxyHandler._invoke(EjbObjectProxyHandler.java:77)
        at 
org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:321)
        ... 53 more
Caused by: <openjpa-1.0.1-r420667:592145 fatal general error> 
org.apache.openjpa.persistence.PersistenceException: The transaction has been 
rolled back.  See the nested exceptions for details on the errors that occurred.
        at 
org.apache.openjpa.kernel.BrokerImpl.newFlushException(BrokerImpl.java:2107)
        at org.apache.openjpa.kernel.BrokerImpl.flush(BrokerImpl.java:1954)
        at org.apache.openjpa.kernel.BrokerImpl.flushSafe(BrokerImpl.java:1852)
        at org.apache.openjpa.kernel.BrokerImpl.flush(BrokerImpl.java:1623)
        at org.apache.openjpa.kernel.QueryImpl.isInMemory(QueryImpl.java:956)
        at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:790)
        at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:769)
        at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:765)
        at 
org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java:517)
        at org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:238)
        at 
org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:277)
        at de.nrw.hagen.ggrz.db.BasisDAO.nextId(BasisDAO.java:37)
        at 
de.nrw.hagen.ggrz.bv.person.db.PersonDAOImpl.anlegenJuristischePerson(PersonDAOImpl.java:129)
        at 
de.nrw.hagen.ggrz.bv.person.db.PersonDAOImpl.anlegenPerson(PersonDAOImpl.java:78)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at 
org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:146)
        at 
org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:129)
        at 
org.apache.openejb.core.interceptor.InterceptorStack.invoke(InterceptorStack.java:67)
        at 
org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:210)
        at 
org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:188)
        at 
org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:165)
        at 
org.apache.openejb.core.ivm.EjbObjectProxyHandler.businessMethod(EjbObjectProxyHandler.java:217)
        at 
org.apache.openejb.core.ivm.EjbObjectProxyHandler._invoke(EjbObjectProxyHandler.java:77)
        at 
org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:321)
        ... 69 more
Caused by: <openjpa-1.0.1-r420667:592145 nonfatal general error> 
org.apache.openjpa.persistence.PersistenceException: FEHLER: Einfügen oder 
Aktualisieren in Tabelle »person« verletzt Fremdschlüssel-Constraint 
»person_historie_fk_fkey«
  Detail: Schlüssel (historie_fk)=(27) ist nicht in Tabelle »historie« 
vorhanden. {prepstmnt 19422193 INSERT INTO vesuv.person (id, bemerkung, 
historie_fk, name, persontyp, phonetischer_diskriptor_name, 
vermoegensverzeichnis_fk, vorgaenger_version_fk) VALUES (?, ?, ?, ?, ?, ?, ?, 
?) [params=(long) 7, (null) null, (long) 27, (String) , (int) 0, (String) , 
(long) 0, (null) null]} [code=0, state=23503]
FailedObject: [EMAIL PROTECTED]
        at 
org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException(DBDictionary.java:3938)
        at 
org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:97)
        at 
org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:67)
        at 
org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.flushInternal(PreparedStatementManagerImpl.java:108)
        at 
org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.flush(PreparedStatementManagerImpl.java:73)
        at 
org.apache.openjpa.jdbc.kernel.OperationOrderUpdateManager.flushPrimaryRow(OperationOrderUpdateManager.java:203)
        at 
org.apache.openjpa.jdbc.kernel.OperationOrderUpdateManager.flush(OperationOrderUpdateManager.java:89)
        at 
org.apache.openjpa.jdbc.kernel.AbstractUpdateManager.flush(AbstractUpdateManager.java:89)
        at 
org.apache.openjpa.jdbc.kernel.AbstractUpdateManager.flush(AbstractUpdateManager.java:72)
        at 
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.flush(JDBCStoreManager.java:514)
        at 
org.apache.openjpa.kernel.DelegatingStoreManager.flush(DelegatingStoreManager.java:130)
        ... 95 more
Caused by: org.apache.openjpa.lib.jdbc.ReportingSQLException: FEHLER: Einfügen 
oder Aktualisieren in Tabelle »person« verletzt Fremdschlüssel-Constraint 
»person_historie_fk_fkey«
  Detail: Schlüssel (historie_fk)=(27) ist nicht in Tabelle »historie« 
vorhanden. {prepstmnt 19422193 INSERT INTO vesuv.person (id, bemerkung, 
historie_fk, name, persontyp, phonetischer_diskriptor_name, 
vermoegensverzeichnis_fk, vorgaenger_version_fk) VALUES (?, ?, ?, ?, ?, ?, ?, 
?) [params=(long) 7, (null) null, (long) 27, (String) , (int) 0, (String) , 
(long) 0, (null) null]} [code=0, state=23503]
        at 
org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.wrap(LoggingConnectionDecorator.java:192)
        at 
org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.access$800(LoggingConnectionDecorator.java:57)
        at 
org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator$LoggingConnection$LoggingPreparedStatement.executeUpdate(LoggingConnectionDecorator.java:858)
        at 
org.apache.openjpa.lib.jdbc.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:269)
        at 
org.apache.openjpa.lib.jdbc.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:269)
        at 
org.apache.openjpa.jdbc.kernel.JDBCStoreManager$CancelPreparedStatement.executeUpdate(JDBCStoreManager.java:1363)
        at 
org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.flushInternal(PreparedStatementManagerImpl.java:97)
        ... 102 more







This does not work, (there is no exception that can be caught at the service 
fasseade or the JSF bean):

[de.nrw.hagen.ggrz.bv.benutzer.db.BenutzerDAOImpl] >> $$ BenutzerDAO::generated 
id = 34
13:52:40,109 WARN  [Transaction] Unexpected exception from beforeCompletion; 
transaction will roll back
<openjpa-1.0.1-r420667:592145 fatal general error> 
org.apache.openjpa.persistence.PersistenceException: The transaction has been 
rolled back.  See the nested exceptions for details on the errors that occurred.
        at 
org.apache.openjpa.kernel.BrokerImpl.newFlushException(BrokerImpl.java:2107)
        at org.apache.openjpa.kernel.BrokerImpl.flush(BrokerImpl.java:1954)
        at org.apache.openjpa.kernel.BrokerImpl.flushSafe(BrokerImpl.java:1852)
        at 
org.apache.openjpa.kernel.BrokerImpl.beforeCompletion(BrokerImpl.java:1770)
        at 
org.apache.geronimo.transaction.manager.TransactionImpl.beforeCompletion(TransactionImpl.java:514)
        at 
org.apache.geronimo.transaction.manager.TransactionImpl.beforeCompletion(TransactionImpl.java:499)
        at 
org.apache.geronimo.transaction.manager.TransactionImpl.beforePrepare(TransactionImpl.java:400)
        at 
org.apache.geronimo.transaction.manager.TransactionImpl.commit(TransactionImpl.java:257)
        at 
org.apache.geronimo.transaction.manager.TransactionManagerImpl.commit(TransactionManagerImpl.java:245)
        at 
org.apache.openejb.core.transaction.TransactionPolicy.commitTransaction(TransactionPolicy.java:141)
        at 
org.apache.openejb.core.transaction.TxRequired.afterInvoke(TxRequired.java:75)
        at 
org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:233)
        at 
org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:188)
        at 
org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:165)
        at 
org.apache.openejb.core.ivm.EjbObjectProxyHandler.businessMethod(EjbObjectProxyHandler.java:217)
        at 
org.apache.openejb.core.ivm.EjbObjectProxyHandler._invoke(EjbObjectProxyHandler.java:77)
        at 
org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:321)
        at 
org.apache.openejb.util.proxy.Jdk13InvocationHandler.invoke(Jdk13InvocationHandler.java:49)
        at $Proxy92.anlegenBenutzer(Unknown Source)
        at 
de.nrw.hagen.ggrz.benutzer.controler.BenutzerControler.anlegenBenutzer(BenutzerControler.java:44)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at org.apache.el.parser.AstValue.invoke(AstValue.java:131)
        at 
org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
        at 
org.apache.jasper.el.JspMethodExpression.invoke(JspMethodExpression.java:68)
        at 
javax.faces.component._MethodExpressionToMethodBinding.invoke(_MethodExpressionToMethodBinding.java:75)
        at 
org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:54)
        at javax.faces.component.UICommand.broadcast(UICommand.java:121)
        at 
javax.faces.component.UIViewRoot._broadcastForPhase(UIViewRoot.java:292)
        at javax.faces.component.UIViewRoot.process(UIViewRoot.java:209)
        at 
javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:117)
        at 
org.apache.myfaces.lifecycle.InvokeApplicationExecutor.execute(InvokeApplicationExecutor.java:32)
        at 
org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:103)
        at 
org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:76)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:148)
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
        at 
org.apache.geronimo.tomcat.valve.DefaultSubjectValve.invoke(DefaultSubjectValve.java:56)
        at 
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525)
        at 
org.apache.geronimo.tomcat.GeronimoStandardContext$SystemMethodValve.invoke(GeronimoStandardContext.java:396)
        at 
org.apache.geronimo.tomcat.valve.GeronimoBeforeAfterValve.invoke(GeronimoBeforeAfterValve.java:47)
        at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
        at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at 
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563)
        at 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
        at 
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
        at 
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
        at 
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
        at java.lang.Thread.run(Thread.java:595)
Caused by: <openjpa-1.0.1-r420667:592145 nonfatal general error> 
org.apache.openjpa.persistence.PersistenceException: FEHLER: Einfügen oder 
Aktualisieren in Tabelle »benutzer« verletzt Fremdschlüssel-Constraint 
»benutzer_verknuepft_mit_fk_fkey«
  Detail: Schlüssel (verknuepft_mit_fk)=(1) ist nicht in Tabelle »person« 
vorhanden. {prepstmnt 31078533 INSERT INTO vesuv.benutzer (id, 
anzahl_anmeldeversuche, anzahl_anmeldungen, benutzer_kennung, 
datum_letzte_passwort_aenderung, email_anlage, historie_fk, ist_gesperrt, 
ist_gesperrt_seit, kostenbefreiung_online_auskunft, letzte_benutzer_gruppe_fk, 
letzter_anmeldeversuch, passwort_fehlversuche_zaehler, passwort_historie, 
passwort_sha256hash, passwort_wechsel_erst_anmeldung, person_info_fk, 
sperrgrund, verknuepft_mit_fk, zuletzt_angemeldet_am) VALUES (?, ?, ?, ?, ?, ?, 
?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) [params=(long) 34, (long) 0, (long) 
0, (String) a, (Timestamp) 1970-01-01 01:00:00.0, (boolean) false, (long) 0, 
(boolean) false, (Timestamp) 1970-01-01 01:00:00.0, (boolean) false, (long) 0, 
(Timestamp) 3908-03-21 10:22:00.0, (long) 0, (String) nixx, (String) b, 
(boolean) false, (long) 0, (String) keiner, (long) 1, (Timestamp) 3908-03-21 
10:22:00.0]} [code=0, state=23503]
FailedObject: [EMAIL PROTECTED]
        at 
org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException(DBDictionary.java:3938)
        at 
org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:97)
        at 
org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:67)
        at 
org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.flushInternal(PreparedStatementManagerImpl.java:108)
        at 
org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.flush(PreparedStatementManagerImpl.java:73)
        at 
org.apache.openjpa.jdbc.kernel.OperationOrderUpdateManager.flushPrimaryRow(OperationOrderUpdateManager.java:203)
        at 
org.apache.openjpa.jdbc.kernel.OperationOrderUpdateManager.flush(OperationOrderUpdateManager.java:89)
        at 
org.apache.openjpa.jdbc.kernel.AbstractUpdateManager.flush(AbstractUpdateManager.java:89)
        at 
org.apache.openjpa.jdbc.kernel.AbstractUpdateManager.flush(AbstractUpdateManager.java:72)
        at 
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.flush(JDBCStoreManager.java:514)
        at 
org.apache.openjpa.kernel.DelegatingStoreManager.flush(DelegatingStoreManager.java:130)
        ... 53 more
Caused by: org.apache.openjpa.lib.jdbc.ReportingSQLException: FEHLER: Einfügen 
oder Aktualisieren in Tabelle »benutzer« verletzt Fremdschlüssel-Constraint 
»benutzer_verknuepft_mit_fk_fkey«
  Detail: Schlüssel (verknuepft_mit_fk)=(1) ist nicht in Tabelle »person« 
vorhanden. {prepstmnt 31078533 INSERT INTO vesuv.benutzer (id, 
anzahl_anmeldeversuche, anzahl_anmeldungen, benutzer_kennung, 
datum_letzte_passwort_aenderung, email_anlage, historie_fk, ist_gesperrt, 
ist_gesperrt_seit, kostenbefreiung_online_auskunft, letzte_benutzer_gruppe_fk, 
letzter_anmeldeversuch, passwort_fehlversuche_zaehler, passwort_historie, 
passwort_sha256hash, passwort_wechsel_erst_anmeldung, person_info_fk, 
sperrgrund, verknuepft_mit_fk, zuletzt_angemeldet_am) VALUES (?, ?, ?, ?, ?, ?, 
?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) [params=(long) 34, (long) 0, (long) 
0, (String) a, (Timestamp) 1970-01-01 01:00:00.0, (boolean) false, (long) 0, 
(boolean) false, (Timestamp) 1970-01-01 01:00:00.0, (boolean) false, (long) 0, 
(Timestamp) 3908-03-21 10:22:00.0, (long) 0, (String) nixx, (String) b, 
(boolean) false, (long) 0, (String) keiner, (long) 1, (Timestamp) 3908-03-21 
10:22:00.0]} [code=0, state=23503]
        at 
org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.wrap(LoggingConnectionDecorator.java:192)
        at 
org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.access$800(LoggingConnectionDecorator.java:57)
        at 
org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator$LoggingConnection$LoggingPreparedStatement.executeUpdate(LoggingConnectionDecorator.java:858)
        at 
org.apache.openjpa.lib.jdbc.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:269)
        at 
org.apache.openjpa.lib.jdbc.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:269)
        at 
org.apache.openjpa.jdbc.kernel.JDBCStoreManager$CancelPreparedStatement.executeUpdate(JDBCStoreManager.java:1363)
        at 
org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.flushInternal(PreparedStatementManagerImpl.java:97)
        ... 60 more
[de.nrw.hagen.ggrz.benutzer.controler.BenutzerControler] >> $$Success from 
neuer Benutzer = true









> Persistence Exception is not visible/lost for client. 
> ------------------------------------------------------
>
>                 Key: GERONIMO-3907
>                 URL: https://issues.apache.org/jira/browse/GERONIMO-3907
>             Project: Geronimo
>          Issue Type: Bug
>      Security Level: public(Regular issues) 
>          Components: persistence
>    Affects Versions: 2.0.2, 2.1
>         Environment: Linux, Windows
>            Reporter: Ralf Baumhof
>            Priority: Blocker
>   Original Estimate: 0.08h
>  Remaining Estimate: 0.08h
>
> I am trying an insert on a table. The Entity class is wrong annotated, one 
> column was renamed in the table. Then the following situation occurs.  
> The call to persist(entity) is successfully, no exception is thrown. On 
> leaving the ejb container and returning to tomact a commit is performed (it's 
> a managed datasource, so container performs commit). This leads to the insert 
> on database. This insert fails, a rollback is performed. On return to the JSF 
> bean no exception can be seen by the bean. In the same class i have got a 
> query method. If i replace the call to persist with the call to the query 
> method everything works ok. The exception is thrown and is visible at the 
> client site. 
> This is the geronimo console output. The last line comes from the JSB bean 
> which reports a successful insert.
> 11:58:04,390 WARN  [Transaction] Unexpected exception from beforeCompletion; 
> transaction will roll back
> <openjpa-1.0.1-r420667:592145 fatal general error> 
> org.apache.openjpa.persistence.PersistenceException: The transaction has been 
> rolled back.  See the nested exceptions for details on the errors that 
> occurred.
>         at 
> org.apache.openjpa.kernel.BrokerImpl.newFlushException(BrokerImpl.java:2107)
>         at org.apache.openjpa.kernel.BrokerImpl.flush(BrokerImpl.java:1954)
>         at 
> org.apache.openjpa.kernel.BrokerImpl.flushSafe(BrokerImpl.java:1852)
>         at 
> org.apache.openjpa.kernel.BrokerImpl.beforeCompletion(BrokerImpl.java:1770)
>         at 
> org.apache.geronimo.transaction.manager.TransactionImpl.beforeCompletion(TransactionImpl.java:514)
>         at 
> org.apache.geronimo.transaction.manager.TransactionImpl.beforeCompletion(TransactionImpl.java:499)
>         at 
> org.apache.geronimo.transaction.manager.TransactionImpl.beforePrepare(TransactionImpl.java:400)
>         at 
> org.apache.geronimo.transaction.manager.TransactionImpl.commit(TransactionImpl.java:257)
>         at 
> org.apache.geronimo.transaction.manager.TransactionManagerImpl.commit(TransactionManagerImpl.java:245)
>         at 
> org.apache.openejb.core.transaction.TransactionPolicy.commitTransaction(TransactionPolicy.java:141)
>         at 
> org.apache.openejb.core.transaction.TxRequired.afterInvoke(TxRequired.java:75)
>         at 
> org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:233)
>         at 
> org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:188)
>         at 
> org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:165)
>         at 
> org.apache.openejb.core.ivm.EjbObjectProxyHandler.businessMethod(EjbObjectProxyHandler.java:217)
>         at 
> org.apache.openejb.core.ivm.EjbObjectProxyHandler._invoke(EjbObjectProxyHandler.java:77)
>         at 
> org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:321)
>         at 
> org.apache.openejb.util.proxy.Jdk13InvocationHandler.invoke(Jdk13InvocationHandler.java:49)
>         at $Proxy75.anlegenBenutzer(Unknown Source)
>         at 
> de.nrw.hagen.ggrz.benutzer.controler.BenutzerControler.anlegenBenutzer(BenutzerControler.java:44)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:585)
>         at org.apache.el.parser.AstValue.invoke(AstValue.java:131)
>         at 
> org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
>         at 
> org.apache.jasper.el.JspMethodExpression.invoke(JspMethodExpression.java:68)
>         at 
> javax.faces.component._MethodExpressionToMethodBinding.invoke(_MethodExpressionToMethodBinding.java:75)
>         at 
> org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:54)
>         at javax.faces.component.UICommand.broadcast(UICommand.java:121)
>         at 
> javax.faces.component.UIViewRoot._broadcastForPhase(UIViewRoot.java:292)
>         at javax.faces.component.UIViewRoot.process(UIViewRoot.java:209)
>         at 
> javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:117)
>         at 
> org.apache.myfaces.lifecycle.InvokeApplicationExecutor.execute(InvokeApplicationExecutor.java:32)
>         at 
> org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:103)
>         at 
> org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:76)
>         at javax.faces.webapp.FacesServlet.service(FacesServlet.java:148)
>         at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
>         at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>         at 
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
>         at 
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
>         at 
> org.apache.geronimo.tomcat.valve.DefaultSubjectValve.invoke(DefaultSubjectValve.java:56)
>         at 
> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525)
>         at 
> org.apache.geronimo.tomcat.GeronimoStandardContext$SystemMethodValve.invoke(GeronimoStandardContext.java:396)
>         at 
> org.apache.geronimo.tomcat.valve.GeronimoBeforeAfterValve.invoke(GeronimoBeforeAfterValve.java:47)
>         at 
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
>         at 
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
>         at 
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
>         at 
> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563)
>         at 
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
>         at 
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
>         at 
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
>         at 
> org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
>         at java.lang.Thread.run(Thread.java:595)
> Caused by: <openjpa-1.0.1-r420667:592145 nonfatal general error> 
> org.apache.openjpa.persistence.PersistenceException: FEHLER: Spalte 
> »letzte_benutzer_gruppe« von Relation »benutzer« existiert nicht {prepstmnt 
> 17230170 INSERT INTO vesuv.benutzer (id, anzahl_anmeldeversuche, 
> anzahl_anmeldungen, benutzer_kennung, datum_letzte_passwort_aenderung, 
> email_anlage, historie_fk, ist_gesperrt, ist_gesperrt_seit, 
> kostenbefreiung_online_auskunft, letzte_benutzer_gruppe, 
> letzter_anmeldeversuch, passwort_fehlversuche_zaehler, passwort_historie, 
> passwort_sha256hash, passwort_wechsel_erst_anmeldung, person_info, 
> sperrgrund, verknuepft_mit, zuletzt_angemeldet_am) VALUES (?, ?, ?, ?, ?, ?, 
> ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) [params=(long) 31, (long) 0, (long) 
> 0, (String) a, (Timestamp) 1970-01-01 01:00:00.0, (boolean) false, (long) 0, 
> (boolean) false, (Timestamp) 1970-01-01 01:00:00.0, (boolean) false, (long) 
> 0, (Timestamp) 3908-03-21 10:22:00.0, (long) 0, (String) nixx, (String) b, 
> (boolean) false, (long) 0, (String) keiner, (long) 1, (Timestamp) 3908-03-21 
> 10:22:00.0]} [code=0, state=42703]
> FailedObject: [EMAIL PROTECTED]
>         at 
> org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException(DBDictionary.java:3938)
>         at 
> org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:97)
>         at 
> org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:67)
>         at 
> org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.flushInternal(PreparedStatementManagerImpl.java:108)
>         at 
> org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.flush(PreparedStatementManagerImpl.java:73)
>         at 
> org.apache.openjpa.jdbc.kernel.OperationOrderUpdateManager.flushPrimaryRow(OperationOrderUpdateManager.java:203)
>         at 
> org.apache.openjpa.jdbc.kernel.OperationOrderUpdateManager.flush(OperationOrderUpdateManager.java:89)
>         at 
> org.apache.openjpa.jdbc.kernel.AbstractUpdateManager.flush(AbstractUpdateManager.java:89)
>         at 
> org.apache.openjpa.jdbc.kernel.AbstractUpdateManager.flush(AbstractUpdateManager.java:72)
>         at 
> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.flush(JDBCStoreManager.java:514)
>         at 
> org.apache.openjpa.kernel.DelegatingStoreManager.flush(DelegatingStoreManager.java:130)
>         ... 53 more
> Caused by: org.apache.openjpa.lib.jdbc.ReportingSQLException: FEHLER: Spalte 
> »letzte_benutzer_gruppe« von Relation »benutzer« existiert nicht {prepstmnt 
> 17230170 INSERT INTO vesuv.benutzer (id, anzahl_anmeldeversuche, 
> anzahl_anmeldungen, benutzer_kennung, datum_letzte_passwort_aenderung, 
> email_anlage, historie_fk, ist_gesperrt, ist_gesperrt_seit, 
> kostenbefreiung_online_auskunft, letzte_benutzer_gruppe, 
> letzter_anmeldeversuch, passwort_fehlversuche_zaehler, passwort_historie, 
> passwort_sha256hash, passwort_wechsel_erst_anmeldung, person_info, 
> sperrgrund, verknuepft_mit, zuletzt_angemeldet_am) VALUES (?, ?, ?, ?, ?, ?, 
> ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) [params=(long) 31, (long) 0, (long) 
> 0, (String) a, (Timestamp) 1970-01-01 01:00:00.0, (boolean) false, (long) 0, 
> (boolean) false, (Timestamp) 1970-01-01 01:00:00.0, (boolean) false, (long) 
> 0, (Timestamp) 3908-03-21 10:22:00.0, (long) 0, (String) nixx, (String) b, 
> (boolean) false, (long) 0, (String) keiner, (long) 1, (Timestamp) 3908-03-21 
> 10:22:00.0]} [code=0, state=42703]
>         at 
> org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.wrap(LoggingConnectionDecorator.java:192)
>         at 
> org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.access$800(LoggingConnectionDecorator.java:57)
>         at 
> org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator$LoggingConnection$LoggingPreparedStatement.executeUpdate(LoggingConnectionDecorator.java:858)
>         at 
> org.apache.openjpa.lib.jdbc.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:269)
>         at 
> org.apache.openjpa.lib.jdbc.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:269)
>         at 
> org.apache.openjpa.jdbc.kernel.JDBCStoreManager$CancelPreparedStatement.executeUpdate(JDBCStoreManager.java:1363)
>         at 
> org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.flushInternal(PreparedStatementManagerImpl.java:97)
>         ... 60 more
> [de.nrw.hagen.ggrz.benutzer.controler.BenutzerControler] >> $$Success from 
> neuer Benutzer = true

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to