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

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

I have just upgraded my geronimo 2.1 with a new openjpa (1.0.2) version. The 
error is the same. The situation always occurs if you have only one insert on 
the database. So, the physical insert on database is performed AFTER the 
stateless session bean is executed (by ejb container on performing the commit 
with the jta datasource). If i throw an exception by myself it is recognized. 
Did you try this situation in your environment?  The situation does not occur 
if i have several inserts on dependant objects. In this case OpenJPA writes to 
database earlier and the exception is thrown during one of the persist calls. 
The database is a postgresql 8.2 database. Is there a possibility to force 
OpenJPA always write through to the database on each persist call?? Much thanks 
in advance!!

> 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