|
1 | 1 | /*
|
2 |
| - * Copyright 2002-2023 the original author or authors. |
| 2 | + * Copyright 2002-2025 the original author or authors. |
3 | 3 | *
|
4 | 4 | * Licensed under the Apache License, Version 2.0 (the "License");
|
5 | 5 | * you may not use this file except in compliance with the License.
|
|
19 | 19 | import jakarta.persistence.EntityManager;
|
20 | 20 | import jakarta.persistence.EntityTransaction;
|
21 | 21 | import jakarta.persistence.OptimisticLockException;
|
| 22 | +import jakarta.persistence.PersistenceException; |
22 | 23 | import org.junit.jupiter.api.Test;
|
23 | 24 |
|
24 | 25 | import org.springframework.transaction.TransactionDefinition;
|
|
33 | 34 | /**
|
34 | 35 | * @author Costin Leau
|
35 | 36 | * @author Phillip Webb
|
| 37 | + * @author Juergen Hoeller |
36 | 38 | */
|
37 | 39 | class DefaultJpaDialectTests {
|
38 | 40 |
|
39 |
| - private JpaDialect dialect = new DefaultJpaDialect(); |
| 41 | + private final JpaDialect dialect = new DefaultJpaDialect(); |
40 | 42 |
|
41 |
| - @Test |
42 |
| - void testDefaultTransactionDefinition() { |
43 |
| - DefaultTransactionDefinition definition = new DefaultTransactionDefinition(); |
44 |
| - definition.setIsolationLevel(TransactionDefinition.ISOLATION_REPEATABLE_READ); |
45 |
| - assertThatExceptionOfType(TransactionException.class).isThrownBy(() -> |
46 |
| - dialect.beginTransaction(null, definition)); |
47 |
| - } |
48 | 43 |
|
49 | 44 | @Test
|
50 | 45 | void testDefaultBeginTransaction() throws Exception {
|
51 | 46 | TransactionDefinition definition = new DefaultTransactionDefinition();
|
52 | 47 | EntityManager entityManager = mock();
|
53 | 48 | EntityTransaction entityTx = mock();
|
54 |
| - |
55 | 49 | given(entityManager.getTransaction()).willReturn(entityTx);
|
56 | 50 |
|
57 | 51 | dialect.beginTransaction(entityManager, definition);
|
58 | 52 | }
|
59 | 53 |
|
| 54 | + @Test |
| 55 | + void testCustomIsolationLevel() { |
| 56 | + DefaultTransactionDefinition definition = new DefaultTransactionDefinition(); |
| 57 | + definition.setIsolationLevel(TransactionDefinition.ISOLATION_REPEATABLE_READ); |
| 58 | + |
| 59 | + assertThatExceptionOfType(TransactionException.class).isThrownBy(() -> |
| 60 | + dialect.beginTransaction(null, definition)); |
| 61 | + } |
| 62 | + |
60 | 63 | @Test
|
61 | 64 | void testTranslateException() {
|
62 |
| - OptimisticLockException ex = new OptimisticLockException(); |
63 |
| - assertThat(dialect.translateExceptionIfPossible(ex).getCause()).isEqualTo(EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(ex).getCause()); |
| 65 | + PersistenceException ex = new OptimisticLockException(); |
| 66 | + assertThat(dialect.translateExceptionIfPossible(ex)) |
| 67 | + .isInstanceOf(JpaOptimisticLockingFailureException.class).hasCause(ex); |
64 | 68 | }
|
| 69 | + |
65 | 70 | }
|
0 commit comments