inheritance - GORM,继承的模型,递归链接

标签 inheritance grails groovy gorm

假设我们有书

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设置父本时会收到java.lang.reflect.InvocationTargetException。

我知道我在这里想念什么...

最佳答案

使用鉴别功能:

  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
  }

}

关于inheritance - GORM,继承的模型,递归链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8089429/

相关文章:

grails - 获取在GSP中执行操作的网址?

java - 如何访问默认包中的 java 类?

Java:枚举常量中方法和变量的定义

ruby-on-rails - 实现抽象基模型类,Rails Way™

java - 向不可扩展类 java 添加新功能

grails - 当我将应用程序复制到新计算机时,Grails希望降级我的插件

grails - 在 grails 中为当前登录的用户创建

javascript - 如何在 Controller View 中显示消息框?

groovy - build.gradle 文件,使用 << 表示法的任务,intellij 警告 : "Cannot infer argument type"

c# - C#中的类和基类继承