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)
    }
 }