[ https://issues.apache.org/jira/browse/GERONIMO-3907?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Joe Bohn resolved GERONIMO-3907. -------------------------------- Resolution: Fixed As confirmed in comments the core issue was resolved in 2.1.1. > 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 > Assignee: David Jencks > Priority: Minor > Fix For: 2.1.1 > > 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: de.nrw.hagen.ggrz.bv.benutzer.db.benutzer...@8b394 > 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.