如何覆盖 Grails 3 中的 DomainClass getter

How to override a DomainClass getter in Grails 3

我正在将 Grails 2 应用程序升级到 3.3.10,我们有很多未被调用的自定义 getter。许多具有可空值的回退逻辑。

Color getFavColor(){
    if(!favColor){
        return "black"
    }

    return favColor
}

编辑:添加了实际方法

Vendor getMarketPlaceVendor() {
    if (marketPlaceVendor) {
        return marketPlaceVendor
    }
    return campaign?.marketplaceVendor
}

进入代码,HibernateUtils 似乎正在直接访问 属性,无论如何我都找不到解决这个问题的方法? def propertyValue = reflector.getProperty(thisObject, propertyName)

1) 是否有我遗漏的快速修复方法?

2) 这里的理想模式是什么?我是 grails 的新手,想知道是否应该将类似的逻辑移至服务。

Grails 3.3.10 |休眠 5 | Gorm 6.1.12.RELEASE

GORM 6.1 默认使用字段访问,这意味着在通过反射向实例读写数据时使用字段。

如果您希望继续使用 属性 访问权限,可以通过更改配置中的默认映射来进行配置:

import javax.persistence.*
grails.gorm.default.mapping = {
   '*'(accessType: AccessType.PROPERTY)
}

直接取自我们位于 http://gorm.grails.org/6.1.x/hibernate/manual/ 的用户指南。

希望对您有所帮助。