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