假设我们有书
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
}
}