從Grails belongsTo文檔,有什麼用的解釋屬於關聯Grails中
class Book {
static belongsTo = Author
}
什麼是書級聯操作,當CRUD操作上作者進行的影響?
編輯:
感謝您的答覆,可能是我沒有正確說明我的問題。我想知道
VS 之間static belongsTo [author:Author]
static belongsTo = Author
從Grails belongsTo文檔,有什麼用的解釋屬於關聯Grails中
class Book {
static belongsTo = Author
}
什麼是書級聯操作,當CRUD操作上作者進行的影響?
編輯:
感謝您的答覆,可能是我沒有正確說明我的問題。我想知道
VS 之間static belongsTo [author:Author]
static belongsTo = Author
belongsTo
是有益的,如果你需要一個參考回所屬對象的差異。在這種情況下,Author
可能有很多Book
。但是,也許你正在使用書籍對象,並希望提及該書籍實例的Author
。這是獲得它的好方法。
就CRUD而言,刪除或更新書籍不會對Author
做任何事情,但刪除Author
將刪除Book
。如果您沒有添加belongsTo
,那麼將不會有層疊保存/更新/刪除,您必須手動完成。
例子:
def a = new Author(name: 'J.K. Rawling')
a.addToBooks(new Book(title: 'Harry Potter 1'))
a.addToBooks(new Book(title: 'Harry Potter 2'))
a.save() // Saves author and book instances
a.delete() // Author and both books are deleted
編輯:
的OP更新了自己的問題,我真的不知道答案是什麼。希望Burt Beckwith很快會出現!好問題,OP。
它應該是'J. K. Rowling' :)) – Guus
除了Grantmc:
屬於關聯實際上標誌着一個嵌入一種兩者之間的關係,這就是爲什麼這是用來當所有的操作都將自動級聯。
不屬於關聯,你需要手動定義級聯(如果你在人想anycascades您relatoinship)
似乎混亂和額外的努力,我那是因爲我可以實現通過只是簡單地使用關係相同的結果一個hasMany
而忽略belongsTo
,但你需要讓的說Author
類變量Book
域/類
class Author {
static hasMany = [books: Book]
}
class Book {
Author author //can have only one Instance to be saved at a time
}
但是你用belongsTo
是它執行的關係,遵循從012路徑的原因到Book
插入數據時,保持使用belongsTo
控制關係的完美方式。如果您沒有將其指定爲類變量或使用belongsto
Grails不會理解雙向關係。
兩種方式都以相同的方式提供級聯效果。他們唯一的區別是,在前一種情況下,您將在Book
對象中提供作者的引用,而您不在後者中。那就是:
你可以在第二種情況下說Book b = new Book(); b.author
。
作爲doc says,belongsTo = [author:Author]與belongsTo = Autor相同,兩者都會創建一個名爲author的屬性,引用「father」對象。
Saludos
關於你的編輯,兩者沒有什麼不同(實際上,第一個應該是'static belongsTo = [author:Author]')。他們會有同樣的效果。第一種形式只是讓你指定屬性的名稱。 –