在ColdFusion 9.0.1 Hotfix 2的继承图中使用映射的超类时,HBM映射错误

时间:2011-11-01 21:00:03

标签: hibernate orm coldfusion hibernate-mapping coldfusion-9

假设我有一个继承图,其中基类扩展了映射的超类:

component name="Entity" mappedSuperClass="true"
{
    property name="CreatedOn";
}

component name="Pet" extends="Entity" table="Pet" discriminatorcolumn="pet_type"
{
    property name="PetId" fieldtype="id" generator="native";
    property name="Name";
}

component name="Dog" extends="Pet" table="Pet" discriminatorvalue="Dog"
{
    property name="FavoriteFood";
}

component name="Cat" extends="Pet" table="Pet" discriminatorvalue="Cat"
{
    property name="FavoriteSleepingSpot";
}

在这种情况下,我有一个Pet基类,有两个子类DogCatPet还扩展了Entity,它提供了一些审核属性。

ColdFusion 9.0.1 ColdFusion 9.0.1修补程序1 中,这些组件已正确映射。我通过转储HBM映射来验证它。但是,在 ColdFusion 9.0.1 HotFix 2 中,映射不正确。例如,Cat映射应为:

<hibernate-mapping>
    <subclass discriminator-value="Cat"
        entity-name="Cat" extends="cfc:model.Pet"
        lazy="true" name="cfc:model.Cat">
        <property name="FavoriteSleepingSpot" type="string">
            <column name="FAVORITE_SLEEPING_SPOT"/>
        </property>
    </subclass>
</hibernate-mapping>

但实际产生的是:

<hibernate-mapping>
    <subclass discriminator-value="Cat"
        entity-name="Cat" extends="cfc:model.Pet"
        lazy="true" name="cfc:model.Cat">
        <property name="FavoriteSleepingSpot" type="string">
            <column name="FAVORITE_SLEEPING_SPOT"/>
        </property>
        <property name="CreatedOn" type="timestamp">
            <column name="CREATED_ON"/>
        </property>
    </subclass>
</hibernate-mapping>

换句话说,子类映射在CreatedOn类中包含Entity时不应该这样,这可以理解地导致以下错误:

  

实体映射中的重复列:Cat列:CREATED_ON(应使用insert =“false”update =“false”映射)

我的问题是,我的实体被宣布的方式有问题吗?或者我偶然发现 Hotfix 2 中的错误?如果是这样,它的修复方法是什么?

我目前使用的解决方法是转储HBM文件并手动编辑它们以删除重复的属性映射。这工作正常,但每次实体更改时我都必须重复此过程。不幸的是,我们无法回滚到Hotfix 1,因为我们需要Hotfix 2中的一些修复。

0 个答案:

没有答案