并发问题Grails

并发问题Grails,grails,datasource,gorm,Grails,Datasource,Gorm,我正在使用此代码更新一行 SequenceNumber.withNewSession { def hibSession = sessionFactory.getCurrentSession() Sql sql = new Sql(hibSession.connection()) def rows = sql.rows("select for update query"); } 在这个查询中,我更新的数字最初是1200。 每次代码运行时,它都会增加1。 我在循环中运行这个代码

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

SequenceNumber.withNewSession  {
   def hibSession = sessionFactory.getCurrentSession()
   Sql sql = new Sql(hibSession.connection())
   def rows = sql.rows("select for update query");
}
在这个查询中,我更新的数字最初是1200。 每次代码运行时,它都会增加1。 我在循环中运行这个代码5次。 但这并不是刷新hibernate会话,所以每次我都会得到相同的数字1201

我也用过

hibSession.clear()
hibSession.flush()
但是没有成功

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

SequenceNumber.withNewSession  {
   Sql sql = new Sql(dataSource)
   def rows = sql.rows("select for update query")
}
每次我得到一个新号码


有人能告诉我上面的代码有什么问题吗?

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

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

我已经在hibSession.clear()hibSession.flush()status.flush()中使用了它,现在它可以工作了。谢谢