Hibernate “圣杯”;MappingException:未知实体“;在继承类中

Hibernate “圣杯”;MappingException:未知实体“;在继承类中,hibernate,grails,grails-2.0,grails-domain-class,single-table-inheritance,Hibernate,Grails,Grails 2.0,Grails Domain Class,Single Table Inheritance,我在Grails2.5.5中有几个类(简化): class Solution implements Serializable { long id String name static hasOne = [ entity : SolutionEntity ] static mapping = { datasource 'companion' id generator:'sequence', params:[

我在Grails2.5.5中有几个类(简化):

class Solution implements Serializable {
    long id
    String name

    static hasOne = [
        entity : SolutionEntity
    ]

    static mapping = {
        datasource 'companion'
        id generator:'sequence', params:[sequence: 'SOLUTION_SEQ']
        entity cascade: 'delete'
    }

    static constraints = {
        name nullable: true, blank:false, unique: true
        entity nullable: true
    }
}

class SolutionEntity implements Serializable {
    Solution solution

    Long externalEntityId
    private Object externalEntity

    void setExternalEntity(def value){
        externalEntityId = value.id
    }

    static transients = ["externalEntity"]

    static constraints = {
        solution nullable: false, unique: true
        externalEntityId nullable: false
    }

    static mapping = {
        datasource 'companion'
        id generator:'sequence', params:[sequence: 'SOLUTION_ENTITY_SEQ']
        tablePerHierarchy true
    }
}

class SolutionPPB extends SolutionEntity implements Serializable {

    PPB getPPB(){
        if(!externalEntity && externalEntityId) {
            externalEntity = PPB.get(externalEntityId)
        }
        externalEntity
    }

    static constraints = {
    }
}
其中的基本思想是,我想将每个
解决方案
与一个
解决方案实体
相关联,该实体可能具有不同的类型(我在这里展示了
PPB
)。这是基于Burt Beckwith的,因为
PPB
在不同的数据源中。我可以随意创建和修改
解决方案
条目,似乎没有任何问题。但是,当我尝试创建一个
SolutionEntity
对象时,如下所示:

def link = SolutionPPB.findOrCreateBySolution(solution)
link.setExternalEntity(entity)
link.save(failOnError: false)
我得到一个例外:

org.springframework.orm.hibernate4.HibernateSystemException: Unknown entity: myapp.Solution; nested exception is org.hibernate.MappingException: Unknown entity: myapp.Solution

我不知道我做错了什么。
解决方案
未知似乎令人惊讶,因为在尝试链接它之前,我在创建
解决方案
时没有遇到任何问题。

这不仅仅是猜测,但您能否将实体替换为其他类似solutionEntity的内容?我还想将类名solutionEntity更改为其他内容。我尝试了3种变体:一种是带有文本的变体“实体”替换为其他内容(这仍然失败),另一个不包含子类(这起作用),我还尝试从解决方案中删除SolutionEntity引用(不起作用)。虽然继承很好,但我认为我现在需要跳过它。PPB类在哪里?它在不同的数据源中(我不能将所有这些放在同一个数据源中),但这并没有什么特别之处——我只想记录PPB和解决方案之间的关联。