grails - GORM多对多映射,可与其他字段结合使用

标签 grails many-to-many gorm jointable

我正在使用旧数据库,并且与联接表具有多对多关联,由于映射工作正常,因此在很大程度上已解决了这个问题。但是还有一列,在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/

相关文章:

mysql - 如何在多对多场景下查询没有作者的图书

grails - 如何使用createCriteria在Grails中执行深度查询

grails - 如何从g:select标记传递值

spring - GORM 全局 beforeInsert 设置 modifiedBy

mysql - war 包装错误grails 2.3.4

grails - Grails-从数据库中检索新实例

grails - 无法在Bootstrap中插入数据

jquery - 如何在 Controller 的 “params”对象中识别我的Ajax键/值?

python - Flask关系模型如果不存在则多次获取或创建

sql - Django Admin 多对多内联 View 的 SQL 查询过多