mirror of
https://github.com/spring-projects/spring-framework.git
synced 2026-09-26 00:39:01 +00:00
Consistent support for JPA 3.2 transaction timeout
Closes gh-35663
This commit is contained in:
@@ -59,11 +59,16 @@ public class DefaultJpaDialect implements JpaDialect, Serializable {
|
||||
public @Nullable Object beginTransaction(EntityManager entityManager, TransactionDefinition definition)
|
||||
throws PersistenceException, SQLException, TransactionException {
|
||||
|
||||
if (definition.getTimeout() != TransactionDefinition.TIMEOUT_DEFAULT) {
|
||||
entityManager.getTransaction().setTimeout(definition.getTimeout());
|
||||
}
|
||||
|
||||
if (definition.getIsolationLevel() != TransactionDefinition.ISOLATION_DEFAULT) {
|
||||
throw new InvalidIsolationLevelException(getClass().getSimpleName() +
|
||||
" does not support custom isolation levels due to limitations in standard JPA. " +
|
||||
"Specific arrangements may be implemented in custom JpaDialect variants.");
|
||||
}
|
||||
|
||||
entityManager.getTransaction().begin();
|
||||
return null;
|
||||
}
|
||||
|
||||
+4
@@ -99,6 +99,10 @@ public class EclipseLinkJpaDialect extends DefaultJpaDialect {
|
||||
public @Nullable Object beginTransaction(EntityManager entityManager, TransactionDefinition definition)
|
||||
throws PersistenceException, SQLException, TransactionException {
|
||||
|
||||
if (definition.getTimeout() != TransactionDefinition.TIMEOUT_DEFAULT) {
|
||||
entityManager.getTransaction().setTimeout(definition.getTimeout());
|
||||
}
|
||||
|
||||
int currentIsolationLevel = definition.getIsolationLevel();
|
||||
if (currentIsolationLevel != TransactionDefinition.ISOLATION_DEFAULT) {
|
||||
// Pass custom isolation level on to EclipseLink's DatabaseLogin configuration.
|
||||
|
||||
Reference in New Issue
Block a user