我正在使用旧数据库,并且与联接表具有多对多关联,由于映射工作正常,因此在很大程度上已解决了这个问题。但是还有一列,在Book的情况下,Author模型可以说nm_author_books包含一个名为“royalty”的字段。问题是如何从任何方向访问此字段?
class Book {
String title
static belongsTo = Author
static hasMany = [authors: Author]
static mapping = { authors joinTable: [name: "mm_author_books", key: 'mm_book_id' ] }
}
class Author {
String name
static hasMany = [books: Book]
static mapping = { books joinTable: [name: "mm_author_books", key: 'mm_author_id'] }
}
如果nm_author_book表具有[nm_book_id,nm_author_id,特许权使用费],则访问特许权使用什么方式?
最佳答案
您可以创建一个对联接表进行建模的域对象,这样就不必更改Book和Author的映射,而是可以将它们指向AuthorBookRoyalty域。
Class AuthorBookRoyalty {
Author author
Book book
Long royalty
}
class Book {
String title
static belongsTo =Author
Static hasMany[authors: AuthorBookRoyalty]
}
对作者进行类似操作,您现在就可以处理版税。您可能需要调整联接表上的映射,以使其映射到当前数据库。
关于grails - GORM多对多映射,可与其他字段结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13261984/