Grails:groovy.sql.Sql和Model.withTransaction会发生什么?

时间:2012-04-19 19:18:39

标签: java grails groovy gorm

如果我将存储过程的sql调用放在withTransaction中,Grails GORM groovy.sql.SqlwithTransaction将使用相同的连接?例如:

让我说我有一个命令:

@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')
    }
  }

}

1 个答案:

答案 0 :(得分:2)

我发现了如何做到这一点。

def sessionFactory

//after GORM saves...  
sessionFactory.currentSession.flush()
Sql s = new Sql( sessionFactory.currentSession.connection()  )
s.call()

this topic中的更多信息。