【问题标题】:Grails, gorm. Find child by parent and parent by child圣杯,戈姆。按父母查找孩子,按孩子查找父母
【发布时间】:2015-04-17 18:53:42
【问题描述】:

例如,我有父类作者:

class Author {    
    String name
    static hasMany = [
         fiction: Book, 
         nonFiction: Book
    ]
}

还有一个子类 Book:

class Book {    
    String title
    static belongsTo = [author: Author]
}

我已经为作者做了一些记录,使用:

def fictBook = new Book(title: "IT")
def nonFictBook = new Book(title: "On Writing: A Memoir of the Craft")
def a = new Author(name: "Stephen King")
             .addToFiction(fictBook)
             .addToNonFiction(nonFictBook)
             .save()

如何找到按父级的子类记录和按子级的父级记录?

【问题讨论】:

    标签: grails grails-orm


    【解决方案1】:

    在我看来,这不是对数据建模的最佳方式。我会这样做。

    class Author {    
      String name
      static hasMany = [books: Book]
    }
    
    class Book {
      String title
      BookTypes bookType
      static belongsTo = [author: Author]
    }
    
    enum BookTypes {
      FICTION,
      NON_FICTION
    }
    

    然后,您可以像这样进行查找

    def author = Author.get(1)
    def nonFictionByAuthor = Book.findAllByAuthorAndBookType(author, BookTypes.NON_FICTION)
    

    你也可以这样做......

    def author = Author.get(1)
    def fictionBooks = author.books.findAll { it.bookType == BookTypes.FICTION }
    

    然后反过来:

    def fictionBook = Book.findByTitleAndBookType('Title001', BookTypes.FICTION) 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-07
      • 1970-01-01
      相关资源
      最近更新 更多