如果我将存储过程的sql调用放在withTransaction
中,Grails GORM groovy.sql.Sql
和withTransaction
将使用相同的连接?例如:
让我说我有一个命令:
@Validateable
class MyCommand {
List<MyModel> listOfModel
}
然后我有一个服务来处理这个命令
class MyService {
def dataSource
def handleCommand( MyCommand command ) {
MyModel.withTransaction { status ->
for( MyModel m : command.listOfModel ) {
if( !m.save() ) {
status.setRollbackOnly()
throw new MyException(m.errors)
}
}
//now I need to call a stored proc. This will use the same connection?
//withTransaction will commit the call?
Sql s = new Sql(dataSource)
s.call('my_stored_proc')
}
}
}
答案 0 :(得分:2)
我发现了如何做到这一点。
def sessionFactory
//after GORM saves...
sessionFactory.currentSession.flush()
Sql s = new Sql( sessionFactory.currentSession.connection() )
s.call()
this topic中的更多信息。