2015-11-14 5 views
0

В чем разница междуПоведение belongsTo

статический belongsTo [автор: Автор]

и

статический belongsTo = Автор

Давайте рассмотрим два класс домена.

Class Author{ 
    String name 
} 

Class Books{ 
    String name 
    static belongsTo = Author 
} 

Когда статического belongsTo = Автор хранятся в области книг, не имеет никакого влияния на дб. Однако static принадлежитTo = [автор: автор] создает обратную ссылку на класс Author, а также есть столбец author_id в db. Итак, что на самом деле использует static принадлежитTo = Author делает. (http://grails.github.io/grails-doc/latest/ref/Domain%20Classes/belongsTo.html).

Кроме того, в чем разница между использованием следующих двух:

Class Books{ 
    String name 
    static belongsTo = [author : Author] 
} 
Class Books{ 
    String name 
    Author author 
} 

статический belongsTo = [Автор: Автор] используется только для каскадных, это правда или у него есть различные варианты использования.

Можете ли вы объяснить это подробно, не связывая его с hasOne или hasMany. Заранее спасибо.

ответ

0

Если вы используете static belongsTo = [author: Author], то в качестве обратной ссылки добавляется свойство с именем author типа Author. С static belongsTo = Author этого не происходит.

1

Использование belongsTo без обратной ссылки необходимо для много-ко многим ассоциаций. Например, предположим, у вас есть следующие классы домена:

class Book { 
    String name 
    Author author 

    static hasMany = [categories: Category] 
} 

class Category { 
    String name 

    static hasMany = [books: Book] 
} 

Если вы пытаетесь использовать их как есть, вы получите исключение, как это:

Нет владельца, определенный между доменными классами [класс Book] и [class Category] во многих отношениях. Пример: статический belongsTo = Категория

Решение сделать один из классов домена по владельца из многие-ко-многим ассоциации. Используя мой пример, я думаю, что имеет смысл сделать владельца Category. Однако обратная ссылка не будет работать, потому что может быть несколько Category с. Таким образом, здесь находится belongsTo без обратной ссылки:

class Book { 
    String name 
    Author author 

    static hasMany = [categories: Category] 
    static belongsTo = Category 
}