Почему get-Property в доменном классе можно использовать только с Set и findAll? - PullRequest
0 голосов
/ 20 января 2011

В Domain класс FooReward Я добавил метод

int getQuantity() {
  FooRewardAssignment.countByReward(this)
}

Использование в GSP должно быть fooRewardInstance.quantity, но это ошибки при запуске (в начальной загрузке) с сообщением, что метод определения не найден.

Если я поменяю его на

Set<FooRewardAssignment> getListOfFoos() {
    FooRewardAssignment.findAllByReward(this)
}

и измените использование в GSP на badeRewardInstance.listOfFoos.size(), оно работает и показывает, как часто назначается специальный FooReward.

Есть идеи, что не так в версии 1?

1 Ответ

5 голосов
/ 20 января 2011

Два обходных пути для этой проблемы:

  1. Изменение возвращаемого значения на def:

    def getQuantity() {    
       FooRewardAssignment.countByReward(this) 
    }
  2. Или путем добавления списка переходных процессов:

    <code>static transients = ['quantity'] 
    int getQuantity() {
       FooRewardAssignment.countByReward(this) 
    }

Иногда GORM создает столбец в таблице на основе метода setters и getters внутри класса домена.И в этой ситуации GORM хочет добавить столбец типа «количество», но ошибка возникает из-за того, что GORM видит только getter и не видит setter.Таким образом, мы можем сказать, что мы не хотим создавать этот столбец в базе данных (статические переходные процессы) или мы можем установить возвращаемое значение как def - но не спрашивайте меня, почему GEF не принимают во внимание def get;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...