Как переопределить метод получения DomainClass в Grails 3 - PullRequest
0 голосов
/ 31 марта 2020

Я обновляю приложение Grails 2 до 3.3.10, и у нас есть множество пользовательских геттеров, которые не вызываются. У многих есть резервная логика c для значений, допускающих обнуляемость.

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 и задаюсь вопросом, следует ли переносить logi c like в службы.

Grails 3.3.10 | Hibernate 5 | Горм 6.1.12. РЕЛИЗ

1 Ответ

0 голосов
/ 01 апреля 2020

GORM 6.1 использует доступ к полям по умолчанию, что означает, что поле используется при чтении и записи данных через отражение в экземплярах.

Если вы хотите sh продолжать использовать доступ к свойству, это можно настроить с помощью изменение отображения по умолчанию в вашей конфигурации:

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

Это взято непосредственно из нашего руководства пользователя по адресу http://gorm.grails.org/6.1.x/hibernate/manual/.

Надеюсь, это поможет.

...