«DefaultJpaDialect не поддерживает пользовательские уровни изоляции» при обновлении до весеннего пакета 5.JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 «DefaultJpaDialect не поддерживает пользовательские уровни изоляции» при обновлении до весеннего пакета 5.

Сообщение Anonymous »

Я обновляю приложение до новейшей версии Spring Boot 3, и из-за этого Spring Batch обновляется до 5.2.3 (с 4.3.10).
Раньше приложение не сохраняло состояния пакета, оно использовало репозиторий заданий «на основе карты».
Поскольку этот репозиторий на основе карты полностью удален в версии 5, мне приходится перейти на репозиторий на основе таблиц JDBC. Я прочитал руководство по миграции ( https://github.com/spring-projects/spri ... tion-Guide ) и в соответствии с ним изменил следующую часть приложения:

Код: Выделить всё

        return new StepBuilder("cnyProcessStep", jobRepository) //
.allowStartIfComplete(true)//
. chunk(1)
.reader(cnyPushItemReader) //
.processor(compositeProcessor) //
.writer(cnyPushItemWriter) //
.faultTolerant()
.skipPolicy((t, skipCount) -> true) //
.listener(defaultBatchListener) //
.transactionAttribute(new DefaultTransactionAttribute(TransactionDefinition.PROPAGATION_NEVER))
.build();
на это:

Код: Выделить всё

...
@Autowired
private PlatformTransactionManager transactionManager;
...

return new StepBuilder("cnyProcessStep", jobRepository) //
.allowStartIfComplete(true)//
. chunk(1, transactionManager)
.reader(cnyPushItemReader) //
.processor(compositeProcessor) //
.writer(cnyPushItemWriter) //
.faultTolerant()
.skipPolicy((t, skipCount) -> true) //
.listener(defaultBatchListener) //
.transactionAttribute(new DefaultTransactionAttribute(TransactionDefinition.PROPAGATION_NEVER))
.build();
По сути, я добавил tx-менеджер платформы в качестве второго параметра в метод chunk(...).
Я также создал необходимые таблицы и последовательности для схемы базы данных (schema-oracle.sql из артефакта пакетного ядра).
После этих изменений задание выдает следующее исключение при выполнении:

Код: Выделить всё

...
Caused by: org.springframework.transaction.InvalidIsolationLevelException: DefaultJpaDialect does not support custom isolation levels due to limitations in standard JPA. Specific arrangements may be implemented in custom JpaDialect variants.
at org.springframework.orm.jpa.DefaultJpaDialect.beginTransaction(DefaultJpaDialect.java:64)
at org.springframework.orm.jpa.JpaTransactionManager.doBegin(JpaTransactionManager.java:421)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.startTransaction(AbstractPlatformTransactionManager.java:532)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:405)
at org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:639)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:374)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:223)
at jdk.proxy2/jdk.proxy2.$Proxy375.getLastJobExecution(Unknown Source)
at org.springframework.batch.core.launch.support.TaskExecutorJobLauncher.run(TaskExecutorJobLauncher.java:109)
В чем моя ошибка?

Подробнее здесь: https://stackoverflow.com/questions/798 ... ading-to-s
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»