Я использую JdbcTemplate и метод с аннотацией @Transactional для выполнения запроса на обновление. После выполнения метода никакие изменения не сохраняются в базе данных. DataSource для JdbcTemplate использует HikariCP, а autoCommit настроен на false (к сожалению, это нельзя изменить).
@Transactional
fun updateVersions() {
jdbcTemplate.update("UPDATE ESLOCK SET MAX_CHANGELOG_EXECUTED = 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)")
}
}