从groovy数据库迁移调用Grails服务

时间:2015-01-16 10:01:48

标签: grails database-migration

使用Grails 2.3.9我试图在数据库迁移变更集中实现常规更改。它使用Grails服务生成UUID。

执行dbm-update失败,“连接代理在事务完成后无法使用”错误。

变更集:

changeSet(author:"sola", id: "gefc.currency.defaultGlobalBaseCurrency.v49") {
    grailsChange {
      change {
        def igs = ctx.getBean("idGeneratorService")

        sql.withBatch(20,
          "INSERT INTO core_setting_value " +
            "  (id, version, module, scope, code, " +
            "   string_value, boolean_value, long_value) " +
            "VALUES " +
            "(?, 0, 'gefc.currency', 'global', ?, ?, ?, ?)"
        ) { ps ->
          ps.addBatch(igs.uuid(), "baseCurrency", \
            "HUF", null, null)
        }

        confirm 'Base currency configuration (global setting)'
      }
    }
  }

1 个答案:

答案 0 :(得分:1)

根本问题在于变更中的groovy代码干扰了Liquibase的事务管理(运行变更集)。

在非事务性的服务方法之后,变更集运行正常。