HHH-13790 Temporary session not being closed
This commit is contained in:
parent
27aff6eb01
commit
7780b74c21
|
@ -238,31 +238,30 @@ public abstract class AbstractPersistentCollection<E> implements Serializable, P
|
||||||
|
|
||||||
SharedSessionContractImplementor originalSession = null;
|
SharedSessionContractImplementor originalSession = null;
|
||||||
boolean isJTA = false;
|
boolean isJTA = false;
|
||||||
|
|
||||||
if ( tempSession != null ) {
|
|
||||||
isTempSession = true;
|
|
||||||
originalSession = session;
|
|
||||||
session = tempSession;
|
|
||||||
|
|
||||||
isJTA = session.getTransactionCoordinator().getTransactionCoordinatorBuilder().isJta();
|
|
||||||
|
|
||||||
if ( !isJTA ) {
|
|
||||||
// Explicitly handle the transactions only if we're not in
|
|
||||||
// a JTA environment. A lazy loading temporary session can
|
|
||||||
// be created even if a current session and transaction are
|
|
||||||
// open (ex: session.clear() was used). We must prevent
|
|
||||||
// multiple transactions.
|
|
||||||
session.beginTransaction();
|
|
||||||
}
|
|
||||||
|
|
||||||
final CollectionPersister collectionDescriptor =
|
|
||||||
session.getSessionFactory()
|
|
||||||
.getMappingMetamodel()
|
|
||||||
.getCollectionDescriptor( getRole() );
|
|
||||||
session.getPersistenceContextInternal().addUninitializedDetachedCollection( collectionDescriptor, this );
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
if ( tempSession != null ) {
|
||||||
|
isTempSession = true;
|
||||||
|
originalSession = session;
|
||||||
|
session = tempSession;
|
||||||
|
|
||||||
|
isJTA = session.getTransactionCoordinator().getTransactionCoordinatorBuilder().isJta();
|
||||||
|
|
||||||
|
if ( !isJTA ) {
|
||||||
|
// Explicitly handle the transactions only if we're not in
|
||||||
|
// a JTA environment. A lazy loading temporary session can
|
||||||
|
// be created even if a current session and transaction are
|
||||||
|
// open (ex: session.clear() was used). We must prevent
|
||||||
|
// multiple transactions.
|
||||||
|
session.beginTransaction();
|
||||||
|
}
|
||||||
|
|
||||||
|
final CollectionPersister collectionDescriptor =
|
||||||
|
session.getSessionFactory()
|
||||||
|
.getMappingMetamodel()
|
||||||
|
.getCollectionDescriptor( getRole() );
|
||||||
|
session.getPersistenceContextInternal()
|
||||||
|
.addUninitializedDetachedCollection( collectionDescriptor, this );
|
||||||
|
}
|
||||||
return lazyInitializationWork.doWork();
|
return lazyInitializationWork.doWork();
|
||||||
}
|
}
|
||||||
finally {
|
finally {
|
||||||
|
|
Loading…
Reference in New Issue