并发问题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()中使用了它,现在它可以工作了。谢谢