Spring JdbcTemplate 和@Transactional 不刷新

Spring JdbcTemplate and @Transactional not flushing

我正在使用 JdbcTemplate 和带有 @Transactional 注释的方法来执行更新查询。方法执行后,不会将任何更改持久保存到数据库中。 JdbcTemplateDataSource 使用 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)")
   }
}