Micronaut + GORM 不深度保存域

Micronaut + GORM does not save domain deeply

正在尝试更新执行域,仅更新来自 table 执行的值

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
    }

}

正在调试.. execution.isDone 已更新 execution.price.isDone 不是

交易结束后 is_done rating_item 未更新

这种情况经常发生。有类似的代码有效。有些情况下我使用DataSource强制更新,但是这次我需要使用GORM

正如我之前提到的,有类似的代码可以工作。所以我注意到在这段代码中我使用了以下内容:

Execution execution = Execution.findById(id)

并且在当前问题中:

Execution execution = Execution.get(id)

当我使用 findBy 时它起作用了。

我认为这是因为 get 没有正确获取域,即使所有内部域都是惰性的:false。我相信这不会发生在 grails 中,而只会发生在 micronaut 中。