【问题标题】:GORM, Inherited model, recursive linkGORM,继承模型,递归链接
【发布时间】:2011-11-11 03:45:46
【问题描述】:

假设我们有书

class Book {

   String title
   String type="Book"
   String author
   Book parentBook // <----<<<
   //...
}

我们将书籍扩展到其他类型

 class ReferenceBook extends Book {

    String type="RefBook"

    void setParentBook(Book b) {
       if ((b && b.type) && (b.type=="RefBook")) {
          parentBook = b
       } else {
          parentBook = null
       }
    }
 }

当我尝试为 ReferenceBook 设置 parentBook 时,我得到一个 java.lang.reflect.InvocationTargetException。

我知道我在这里遗漏了一些东西......

【问题讨论】:

    标签: inheritance grails groovy grails-orm


    【解决方案1】:

    使用鉴别器功能:

      class Book {
       String title
       String author
       Book parentBook // <----<<<
       //...
       static mapping = {
         tablePerHierarchy false
         discriminator column:[name:"discriminator", length:200, value:'Book']
       }
      }
    
    class ReferenceBook extends Book {
      //...
      static mapping = {
        discriminator column:[value:'RefBook']
      }
      void setParentBook(Book b) {
        parentBook = ('RefBook' == b?.properties['class']) ? b : null
      }
    

    }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-18
      • 2011-09-03
      • 2016-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多