Spring JdbcTemplate и @Transactional не сбрасываются

Я использую JdbcTemplate и метод с аннотацией @Transactional для выполнения запроса на обновление. После выполнения метода никакие изменения не сохраняются в базе данных. DataSource для JdbcTemplate использует HikariCP, а autoCommit настроен на false (к сожалению, это нельзя изменить).

@Transactional
fun updateVersions() {
    jdbcTemplate.update("UPDATE ESLOCK SET MAX_CHANGELOG_EXECUTED = 1")
}

Интересно, почему этот оператор не сохраняется после его выполнения?

0
0
738
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В итоге я внедрил TransactionTemplate по умолчанию в приложение, что позволило мне выполнять миграции вручную:

class EsIndexer(
    private val jdbc: JdbcTemplate,
    private val tx: TransactionTemplate
) {

Таким образом, я мог бы выполнить:

internal fun updateVersions() {
   tx.execute {
      jdbc.update("UPDATE MIGRATION_LOG SET MAX_MIGRATION_ID = (SELECT MAX(ID) FROM MIGRATION)")
   }
}

Другие вопросы по теме