尝试更新执行域,只更新表执行中的值
import grails.gorm.annotation.Entity
@Entity
class Execution {
RatingItem price
Boolean isDone
}
@Entity
class RatingItem {
Boolean isDone
}
保存由控制器调用的事务性和单例服务
@Transactional
@Singleton
class ExecutionService{
boolean saveExecution(Execution execution){
if( execution.save(flush:true, failOnError:true) ){
return true
}
return false
}
}
调试. .执行。isDone已更新execution.price.isDone不是
事务结束后,rating_item中的is_done未更新
这种情况经常发生。有类似的代码可以工作。在某些情况下,我使用DataSource来强制更新,但这次我需要使用GORM。
正如我前面提到的,有类似的代码可以工作。所以我注意到在这段代码中我使用了以下代码:
Execution execution = Execution.findById(id)
而在当前的问题中:
Execution execution = Execution.get(id)
当我使用findBy时,它工作了。
我认为这是因为get没有正确地获取域,即使所有内部域都是懒惰的:false。我相信这不会发生在grails中,而只会发生在microaut中。