2015-03-20 4 views
0

Допустим класс домен Owned принадлежит к классу домена Owner, имея эту декларацию в своем теле:Grails, несмотря на наличие belongsTo

static belongsTo [ Owner ] 

Почему же в некоторых случаях я все еще вижу класс домена Owned также имеющий свойство или поле, как ссылка на класс домена Owner как

Owner owner 

, несмотря на оговорку belongsTo в своем теле? Разве декларация belongsTo не позаботится о необходимой ссылке в этом случае?

ответ

2

Сочетание

static belongsTo = [ Owner ] 

и

Owner owner 

является по существу такой же, как

static belongsTo = [owner: Owner ] 

, потому что с помощью карты формы триггеры (через преобразования AST) на создание имущество типа Owner с именем owner.

Мое предпочтение состоит в том, чтобы использовать один оператор, потому что это стандартный способ объявить двунаправленный один-много, а другой способ похож на побочный эффект.

Одна из причин того, что использование простейшей формы belongsTo и объявление свойства владельца - это когда у вас несколько родительских классов домена, но некоторые из них двунаправленные, а некоторые нет, например.

static belongsTo = [Owner, OtherClass] 
Owner owner 

Таким образом, вы делаете Owner/Owned двунаправленным, но оставить OtherClass отношения однонаправленным.

+0

burt, ваши объяснения всегда за пределами вопроса. хороший. но один вопрос заключается в том, что обязательно указывать владельца во многих терминалах r/ship. – dsharew

+0

Да, один из классов домена должен быть владельцем, частично связать два свойства «один-ко-многим» ('hasMany'). На практике это никак не влияет. –

+0

@BurtBeckwith Может ли это статическое принадлежать? = [Owner, OtherClass] и Владелец владельца также может быть выполнен как принадлежитTo = [OtherClass], а затем в том же классе, который принадлежит To = [owner: Owner]. Это означало бы, что два объявления принадлежат одному и тому же классу домена для выполнения той же избирательной двунаправленности, что и в вашем примере, к концу вашего ответа. Или это будет слишком уродливо и считается плохой практикой? –

Смежные вопросы