Hibernate ColdFusion Form mappedSuperClass.hbmxml的字段太多

Hibernate ColdFusion Form mappedSuperClass.hbmxml的字段太多,hibernate,orm,coldfusion,coldfusion-9,Hibernate,Orm,Coldfusion,Coldfusion 9,当我运行下面的代码时,ColdFusion 9(更新为最新版本)为billingaddress cfc生成了一个错误的(imho)XML文件。也就是说,它包括base.cfc的属性。这是一个bug,是我遗漏了什么,还是这是预期的行为 Application.cfc base.cfc 地址:cfc billingaddress.cfc billingaddress.hbmxml 这是我所期望的行为。扩展组件将导致子组件继承父组件的属性。当您有多个继承级别时,它将继承整个链 在阅读了你的评论之后,我

当我运行下面的代码时,ColdFusion 9(更新为最新版本)为billingaddress cfc生成了一个错误的(imho)XML文件。也就是说,它包括base.cfc的属性。这是一个bug,是我遗漏了什么,还是这是预期的行为

Application.cfc base.cfc 地址:cfc billingaddress.cfc billingaddress.hbmxml
这是我所期望的行为。扩展组件将导致子组件继承父组件的属性。当您有多个继承级别时,它将继承整个链

在阅读了你的评论之后,我进一步研究了这个问题。据我所知,您所描述的问题首先出现在中,可能(这里只是猜测)是此错误修复的结果:

当 CFC将属性mappedSuperclass设置为的基本CFC扩展为 对

引用的bug是#83474,我在Adobe的bug跟踪器上找不到它。它反映在Elliot Sprehn的网站上

我还发现了关于同一问题的另一个问题:。该问题中报告的解决方法是手动编辑hbmxml文件


长话短说,它看起来像一个CF bug。我戳了大约20分钟,除了手动编辑hbmxml文件以删除billingaddress.cfc中的额外属性外,找不到其他解决方法。

您知道在使用mappedSuperClass=“true”时,我应该如何重新创建它吗?因为当我这样做的时候,hibernate会返回一个重复的列错误:
实体映射中的重复列:billingaddress列:deleted(应该用insert=“false”update=“false”)映射)
,这很有意义。我很好奇,为什么它会知道它需要继承“id”列,而不是其他列。这似乎是CF9的一个错误,我在Railo 4.2中测试了相同的代码,它在那里按预期工作。大约一个小时后,我可以在CF11上试一试。我没有安装任何早期版本。感谢您的帮助,我已经接受了您的答案,并将使用手动hbmxml文件,至少现在是这样。我发现了该错误的原因,但它被标记为已修复。您为什么选择dbcreate=“dropcreate”和savemapping=true?此外,在onRequestStart()中使用ormreload()会导致在每次请求时重新生成模型。在onApplicationStart()中使用它更正常。是的,原因是,这只是一个测试设置,用于验证我的理智。在live和dev环境中,我们使用不同的设置运行(对于live,dbcreate=“none”)
component
{
  this.name = "ormtest";
  this.mappings["/model"] = expandPath( "./model" );
  this.datasource = "mingo";
  this.ormEnabled = true;
  this.ormSettings = {
    CFCLocation = "/model",
    dbcreate = "dropcreate",
    savemapping = true
  };

  function onRequestStart()
  {
    ormreload();    
  }
}
component mappedSuperClass = "true"
{
  property fieldType = "id"     name = "id" generator = "guid";
  property fieldType = "column" name = "deleted" ORMType = "boolean" default = "0" notnull = "true";
  property fieldType = "column" name = "sortorder" ORMType = "integer";
  property fieldType = "column" name = "label";
}
component extends = "model.base"
          persistent = "true"
          table="address"
          discriminatorColumn = "discriminator"
{
  property name = "address";
}
component extends = "model.address"
          persistent = "true"
          table="address"
          discriminatorValue = "billingaddress"
{}
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
                                   "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <subclass discriminator-value="billingaddress"
        entity-name="billingaddress" extends="cfc:model.address"
        lazy="true" name="cfc:model.billingaddress">
        <property name="deleted" type="boolean">
            <column name="deleted" not-null="true"/>
        </property>
        <property name="sortorder" type="integer">
            <column name="sortorder"/>
        </property>
        <property name="label" type="string">
            <column name="label"/>
        </property>
    </subclass>
</hibernate-mapping>