Есть ли список запрещенных имен методов для объектов домена Grails? - PullRequest
1 голос
/ 20 февраля 2011

Часто, когда я добавляю вспомогательный метод к объекту домена, я получаю ошибку при компиляции, которая разрешается как "свойство x не найдено" Похоже, это происходит для методов с именем getX, setX, а также недавно isX. Есть ли список имен, которые мне следует избегать? Есть ли способ аннотировать или иным образом помечать эти методы, чтобы Grails не путал их с автоматическими свойствами?

Ответы [ 3 ]

7 голосов
/ 20 февраля 2011

Grails автоматически определяет свойства и предполагает их постоянство. Открытые поля в Groovy создают геттер и сеттер под капотом, поэтому предполагается, что геттеры связаны с постоянными полями.

Но если вам нужен вспомогательный метод, который начинается с 'get' или 'is', но не является получателем для постоянного поля, у вас есть два варианта. Одним из них является использование списка transients - см. http://grails.org/doc/latest/ref/Domain%20Classes/transients.html

Другой вариант - объявить возвращаемое значение как def. Поскольку он не типизирован (def является псевдонимом для объекта), Hibernate не может его сохранить, поскольку не знает, какой тип данных использовать, поэтому он игнорируется.

Я предпочитаю список transients, потому что я предпочел бы использовать самодокументируемые методы, где очевидно, что они делают, какие типы параметров они принимают и что возвращают.

0 голосов
/ 23 февраля 2012

Насколько я понимаю вашу проблему, вы можете использовать переходный процесс!

static transients = ['feildName']
0 голосов
/ 20 февраля 2011

Я понятия не имею об общем списке - он слишком разнообразен.Методы соглашения добавляются различными частями Groovy и Grails:

Для доступа к объявленному полю, а не к получателю / установщику, используйте оператор доступа к полю Java .

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