Browse Source

Apply transactionIsolationLock in EclipseLinkConnectionHandle as well

Closes gh-36165

(cherry picked from commit 2b96a61063)
6.2.x
Juergen Hoeller 2 weeks ago
parent
commit
0033edad45
  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

@ -168,7 +168,7 @@ public class EclipseLinkJpaDialect extends DefaultJpaDialect { @@ -168,7 +168,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;
@ -182,7 +182,13 @@ public class EclipseLinkJpaDialect extends DefaultJpaDialect { @@ -182,7 +182,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