Hibernate 使用事务并保存大量对象?

Hibernate 使用事务并保存大量对象?,hibernate,grails,transactions,gorm,Hibernate,Grails,Transactions,Gorm,控制器方法中包含以下代码块 def stat = '' stat = assignBibNumbers(compositeEvent.id) 下面是上面代码中调用的私有函数:请注意,只显示了相关部分 private def assignBibNumbers(Long id){ ... def eventRange = bibsService.convertRangeStringToRangeList(compositeEvent.bibsRange)

控制器方法中包含以下代码块

def stat = ''

    stat = assignBibNumbers(compositeEvent.id)
下面是上面代码中调用的私有函数:请注意,只显示了相关部分

private def assignBibNumbers(Long id){

    ...

    def eventRange = bibsService.convertRangeStringToRangeList(compositeEvent.bibsRange)


    for(int j=0; j<finRegsList.size(); j++){

        finRegsList[j].raceParticipant.bibNumber = eventRange[j]
        finRegsList[j].save()


    }


        return "Bib Setup Complete! No bib assignment was made."




}
它起作用了!所以我很困惑为什么我应该将函数包装在withTransaction块中。我认为即使不在事务块中包装,保存也应该仍然有效。是什么原因导致save()在没有事务块的情况下无法工作?循环中的保存是否应始终包装在事务块中?谢谢你的帮助!谢谢

我认为即使不在事务块中包装,保存也应该仍然有效

如果您的方法使用
@Transactional
或类进行注释,则这是正确的。在您的情况下,请尝试注释
assignBibNumbers()
,如下所示

@Transactional
private def assignBibNumbers(Long id){...}
我认为即使不在事务块中包装,保存也应该仍然有效

如果您的方法使用
@Transactional
或类进行注释,则这是正确的。在您的情况下,请尝试注释
assignBibNumbers()
,如下所示

@Transactional
private def assignBibNumbers(Long id){...}