| *Describe the bug* I am currently upgrading a project from hibernate 5.0.10 (wildfly 10), to hibernate 5.4.17 (quarkus). The application itself works without any problems. Test execution fails however on the new hibernate version. I reduced the problem down to some strange session handling. Inside "AbstractPersistentCollection.setCurrentSession", the sessions are not equal. The collection was created with the entitymanager (and therefore session) I use in my test, but the transaction commit happens with another session. I attached an minimal reproducer project, which has hibernate 5.4.17 as dependency. You can relativly easily switch it to 5.0.10, where the tests execute correctly. *Expected behavior* No problems with test execution after the upgrade to hibernate 5.4.17. *Actual behavior* When I run my tests, I get the following exception. The test run is failed (red) in this case.
Jun 04, 2020 12:20:49 PM org.hibernate.jpa.internal.util.LogHelper logPersistenceUnitInformation
INFO: HHH000204: Processing PersistenceUnitInfo [name: persistenceUnitExample]
Jun 04, 2020 12:20:49 PM org.hibernate.Version logVersion
INFO: HHH000412: Hibernate ORM core version 5.4.17.Final
Jun 04, 2020 12:20:49 PM org.hibernate.annotations.common.reflection.java.JavaReflectionManager <clinit>
INFO: HCANN000001: Hibernate Commons Annotations {5.1.0.Final}
Jun 04, 2020 12:20:50 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
WARN: HHH10001002: Using Hibernate built-in connection pool (not for production use!)
Jun 04, 2020 12:20:50 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001005: using driver [null] at URL [jdbc:h2:mem:test]
Jun 04, 2020 12:20:50 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001001: Connection properties: {}
Jun 04, 2020 12:20:50 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001003: Autocommit mode: false
Jun 04, 2020 12:20:50 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PooledConnections <init>
INFO: HHH000115: Hibernate connection pool size: 20 (min=1)
Jun 04, 2020 12:20:50 PM org.hibernate.dialect.Dialect <init>
INFO: HHH000400: Using dialect: org.hibernate.dialect.H2Dialect
Jun 04, 2020 12:20:50 PM org.hibernate.resource.beans.spi.ManagedBeanRegistryInitiator resolveBeanContainer
INFO: HHH10005002: No explicit CDI BeanManager reference was passed to Hibernate, but CDI is available on the Hibernate ClassLoader.
Jun 04, 2020 12:20:50 PM org.hibernate.resource.transaction.backend.jdbc.internal.DdlTransactionIsolatorNonJtaImpl getIsolatedConnection
INFO: HHH10001501: Connection obtained from JdbcConnectionAccess [org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess@3005db4a] for (non-JTA) DDL execution was not in auto-commit mode; the Connection 'local transaction' will be committed and the Connection will be set into auto-commit mode.
Jun 04, 2020 12:20:50 PM org.hibernate.resource.transaction.backend.jdbc.internal.DdlTransactionIsolatorNonJtaImpl getIsolatedConnection
INFO: HHH10001501: Connection obtained from JdbcConnectionAccess [org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess@3013909b] for (non-JTA) DDL execution was not in auto-commit mode; the Connection 'local transaction' will be committed and the Connection will be set into auto-commit mode.
Jun 04, 2020 12:20:50 PM org.hibernate.engine.transaction.jta.platform.internal.JtaPlatformInitiator initiateService
INFO: HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
Jun 04, 2020 12:20:51 PM org.hibernate.collection.internal.AbstractPersistentCollection unsetSession
WARN: HHH000471: Cannot unset session in a collection because an unexpected session is defined. A persistent collection may only be associated with one session at a time. Collection : [<unreferenced>]
[ERROR] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 2.642 s <<< FAILURE! - in org.acme.ExampleServiceTest
[ERROR] create Time elapsed: 0.666 s <<< ERROR!
javax.persistence.RollbackException: Error while committing the transaction
at org.acme.ExampleServiceTest.create(ExampleServiceTest.java:31)
Caused by: javax.persistence.PersistenceException: org.hibernate.HibernateException: Illegal attempt to associate a collection with two open sessions. Collection : [<unreferenced>]
at org.acme.ExampleServiceTest.create(ExampleServiceTest.java:31)
Caused by: org.hibernate.HibernateException: Illegal attempt to associate a collection with two open sessions. Collection : [<unreferenced>]
at org.acme.ExampleServiceTest.create(ExampleServiceTest.java:31)
*To Reproduce* Steps to reproduce the behavior: 1. Download the attached reproducer project 2. Run "mvn clean test" 3. Tests failed. 4. In the pom.xml, change the hibernate-orm.version to 5.0.10.Final, and add hibernate-entitymanager 5. Run "mvn clean test" again 6. No test error *Environment (please complete the following information):*
- Output of `uname -a` or `ver`:
MSYS_NT-10.0 NANB7NLNVP2 2.10.0(0.325/5/3) 2018-06-13 23:34 x86_64 Msys
- Build tool (ie. output of `mvnw --version` or `gradlew --version`):
Maven home: C:\eclipse\tools\apache-maven\bin\.. Java version: 1.8.0_181, vendor: Oracle Corporation, runtime: C:\Program Files\Java\jdk1.8.0_181\jre Default locale: de_DE, platform encoding: Cp1252 OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
|