[ https://issues.apache.org/jira/browse/OPENJPA-2614?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17364256#comment-17364256 ]
Johannes Testori edited comment on OPENJPA-2614 at 6/16/21, 11:40 AM: ---------------------------------------------------------------------- We encountered the same problem in our application. After some debugging we found out that before the first allocation of a sequence value OpenJPA executes an ALTER SEQUENCE-statement. Since this is a DDL statement, some databases (e.g. Oracle) issue an implicit commit, so no matter if you commit or rollback afterwards, all changes that have been flushed before ALTER SEQUENCE will be committed in the database. So this problem can not only arise at the first rollback, but at the first use of every single sequence that is defined in an entity. A possible solution could be the use of an independent transaction for the ALTER SEQUENCE-statement. was (Author: jtestori): We encountered the same problem in our application. After some debugging we found out that before the first allocation of a sequence value OpenJPA executes an ALTER SEQUENCE-statement. Since this is a DDL statement, some databases (e.g. Oracle) issue an implicit commit, so no matter if you commit or rollback afterwards, all changes that have been flushed before ALTER SEQEUENCE will be committed in the database. So this problem can not only arise at the first rollback, but at the first use of every single sequence that is defined in an entity. A possible solution could be the use of an independent transaction for the ALTER SEQUENCE-statement. > First rollback after application start does not work under certain > circumstances > -------------------------------------------------------------------------------- > > Key: OPENJPA-2614 > URL: https://issues.apache.org/jira/browse/OPENJPA-2614 > Project: OpenJPA > Issue Type: Bug > Components: jpa > Affects Versions: 2.4.0 > Reporter: Tim Gödde > Priority: Major > Attachments: jpa-test.zip > > > Rollback is not complete under the following circumstances: > 1. Entites must use a sequence generator with GenerationType.SEQUENCE > 2. It is the first rollback after application start > 3. You have to flush successfully during the creation of entities > 4. The transaction is rolled back during commit because of a constraint > violation > Expected result: Nothing remains in the database that is created during the > transaction > Actual result: Entites created before the flush are persisted (i.e. not > rolled back) > An example project is attached. It shows the described problem when executing > the test. -- This message was sent by Atlassian Jira (v8.3.4#803005)