小编pkr*_*ety的帖子

Grails或Spring方法级别事务

我是春季/学生交易的新手,阅读后我仍然不清楚,所以我在这里发帖,

我有一个服务类,注释为@Transactional,我有一些方法,其中一些注释为

@Transactional(propagation = Propagation.REQUIRES_NEW)
Run Code Online (Sandbox Code Playgroud)

其中一些不是.

@Transactional
class SomeService {

    def findJob() {
        MyInstance myInstance = getMeAJob();
        if (myInstance) {
            doSomeThing(myInstance)
            doTask()
        }
    }

    @Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception)
    private doSomeThing(MyInstance myInst) {
        myObj = MyInstance.lock(myInst.id)
        try {
            differentObj = doTask(myObj)
            myObj.save()
            doAnotherThing()
            }
        } catch (Exception e) {

            log("Error in doAnotherTask")
        }
    }


    private doAnotherThing(MyInstace myInst) {
        perform some update on myInst
        myInstant.save(flush: true)
    }
    private doTask() {    
    }
Run Code Online (Sandbox Code Playgroud)
  • 假设我有来自类级别的事务t1和来自doSomething()的t2事务 - REQUIRES_NEW.
  • 将在t1中执行的方法 - findJob()和doTask()
  • 将在t2中执行的方法 - doSomeThing() …

grails spring transactions spring-transactions

0
推荐指数
1
解决办法
535
查看次数