代码之家  ›  专栏  ›  技术社区  ›  Stefan Zhelyazkov

Spring JDBCTemplate和@Transactional未刷新

  •  0
  • Stefan Zhelyazkov  · 技术社区  · 7 年前

    我正在使用 JdbcTemplate 和一个方法 @Transactional 执行更新查询的注释。在方法执行之后,不会对数据库保留任何更改。这个 DataSource 对于 使用 使用hikaricp和 autoCommit 设置为 false (不幸的是,不能改变这一点)。

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

    我想知道为什么这个语句在执行后不持久?

    1 回复  |  直到 7 年前
        1
  •  0
  •   Stefan Zhelyazkov    7 年前

    我最后注入了违约 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)")
       }
    }