grails:带反向引用的多个belongsTo
是否可能有一个属于多个域类的域类具有反向引用?例如:grails:带反向引用的多个belongsTo,grails,gorm,Grails,Gorm,是否可能有一个属于多个域类的域类具有反向引用?例如: class Person { List<Book> books static hasMany = [books: Book] } class Organization { List<Books> books static hasMany = [books: Book] } class Book { def owner // what's the type? stati
class Person {
List<Book> books
static hasMany = [books: Book]
}
class Organization {
List<Books> books
static hasMany = [books: Book]
}
class Book {
def owner // what's the type?
static belongsTo = [Person, Books]
}
其中BookOwner是由个人和组织实现的接口。因此,调用bookInstance.owner将返回一个Person或Organization实例,这两个实例都是BookOwner
我的解决方案很有效,但感觉不对劲——这肯定表明我没有完全理解自己在做什么。实现这一点的最佳方式是什么?我是否应该完全放弃拥有极其方便的背景资料
谢谢你我想,你应该创建所有者超类。Grails将创建所有者表,其中字段class表示您的案例中的子类名:Person、Organization
class Book {
Long ownerID
String ownerClass
static belongsTo = [Person, Books]
static transients = ['owner']
static constraints = {
ownerId(nullable:false, blank:false)
ownerClass(nullable:false, blank:false)
}
public BookOwner getOwner() {
grailsApplication.getArtefact("Domain", ownerClass)?.getClazz()?.get(ownerId)
}
}