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.1, 2.0.2
         Environment: Linux, Windows
            Reporter: Ralf Baumhof
            Priority: Blocker


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