【问题标题】:Concurrency Issue Grails并发问题 Grails
【发布时间】:2013-12-01 04:41:05
【问题描述】:

我正在使用此代码更新一行。

SequenceNumber.withNewSession  {
   def hibSession = sessionFactory.getCurrentSession()
   Sql sql = new Sql(hibSession.connection())
   def rows = sql.rows("select for update query");
}

在此查询中,我正在更新数字,最初 sequenceNumber 是 1200。 并且每次运行此代码时,它都会增加 1。 我正在循环运行此代码 5 次。 但这并没有刷新休眠会话,因此每次我得到相同的数字 1201。

我也用过

hibSession.clear()
hibSession.flush()

但没有成功。

如果我使用以下代码,那么它可以正常工作。

SequenceNumber.withNewSession  {
   Sql sql = new Sql(dataSource)
   def rows = sql.rows("select for update query")
}

每次我收到一个新号码。

谁能告诉我上面的代码有什么问题

【问题讨论】:

    标签: grails datasource grails-orm


    【解决方案1】:

    尝试使用事务,最后刷新它,例如:

    SequenceNumber.withTransaction { TransactionStatus status ->
        ...
        status.flush()
    }
    

    【讨论】:

    • 我已经用 hibSession.clear() hibSession.flush() status.flush() 现在它的工作。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多