假设我们有书
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。
我知道我在这里遗漏了一些东西......
答案 0 :(得分: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
}
}