Browse Source

Apply transactionIsolationLock in EclipseLinkConnectionHandle as well

Closes gh-36165
pull/36170/head
Juergen Hoeller 2 weeks ago
parent
commit
2b96a61063
  1. 10
      spring-orm/src/main/java/org/springframework/orm/jpa/vendor/EclipseLinkJpaDialect.java

10
spring-orm/src/main/java/org/springframework/orm/jpa/vendor/EclipseLinkJpaDialect.java vendored

@ -171,7 +171,7 @@ public class EclipseLinkJpaDialect extends DefaultJpaDialect { @@ -171,7 +171,7 @@ public class EclipseLinkJpaDialect extends DefaultJpaDialect {
* This is useful to defer the early transaction begin that obtaining a
* JDBC Connection implies within an EclipseLink EntityManager.
*/
private static class EclipseLinkConnectionHandle implements ConnectionHandle {
private class EclipseLinkConnectionHandle implements ConnectionHandle {
private final EntityManager entityManager;
@ -184,7 +184,13 @@ public class EclipseLinkJpaDialect extends DefaultJpaDialect { @@ -184,7 +184,13 @@ public class EclipseLinkJpaDialect extends DefaultJpaDialect {
@Override
public Connection getConnection() {
if (this.connection == null) {
this.connection = this.entityManager.unwrap(Connection.class);
transactionIsolationLock.lock();
try {
this.connection = this.entityManager.unwrap(Connection.class);
}
finally {
transactionIsolationLock.unlock();
}
}
return this.connection;
}

Loading…
Cancel
Save