Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate 在ColdFusion 9.0.1修补程序2的继承图中使用映射的超类时,HBM映射错误_Hibernate_Orm_Coldfusion_Hibernate Mapping_Coldfusion 9 - Fatal编程技术网

Hibernate 在ColdFusion 9.0.1修补程序2的继承图中使用映射的超类时,HBM映射错误

Hibernate 在ColdFusion 9.0.1修补程序2的继承图中使用映射的超类时,HBM映射错误,hibernate,orm,coldfusion,hibernate-mapping,coldfusion-9,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="nativ

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

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
基类,
Dog
Cat
Pet
还扩展了
实体
,它提供了一些审核属性

ColdFusion 9.0.1ColdFusion 9.0.1修补程序1中,这些组件被正确映射。我通过转储HBM映射来验证它。但是,在ColdFusion 9.0.1修补程序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
,而这是不应该的,这会导致以下错误:

实体映射中的重复列:Cat列:已创建(应使用insert=“false”update=“false”进行映射)

我的问题是,我的实体的声明方式是否有问题?还是我在《热修复程序2》中偶然发现了一个bug?如果是这样的话,解决办法是什么


我当前使用的解决方法是转储HBM文件并手动编辑它们以删除重复的属性映射。这很好,但每次实体发生变化时,我都必须重复这个过程。不幸的是,我们也无法回滚到修补程序1,因为我们需要修补程序2中的一些修补程序。

您向报告了吗?还没有,想先看看是否有人有任何想法。可能与83474中引入的更改有关@Daniel:您有没有为此提交过错误?我想知道CF10上是否仍然会发生这种情况?@Todd:我不记得我是否为此提交了错误修复。我想是的。它可能已在CF10中修复,但我不再使用ColdFusion,因此无法验证。您向报告了吗?还没有,想先看看是否有人有任何想法。可能与83474中引入的更改有关@Daniel:您是否为此提交过错误?我想知道CF10上是否仍然会发生这种情况?@Todd:我不记得我是否为此提交了错误修复。我想是的。它可能已在CF10中修复,但我不再使用ColdFusion,因此无法验证。