首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hibernate子类一对一映射

Hibernate子类一对一映射
EN

Stack Overflow用户
提问于 2009-11-06 09:25:46
回答 1查看 2K关注 0票数 0

我有一个复杂的映射,我相信它应该可以工作。但是,为什么编译后,class A.d列似乎不存在呢?

代码语言:javascript
复制
public abstract Class A {
private Integer Id;
..
...
}

public Class SubA extend A {
   private D d;
}

public Class D {
   private SubA subA;
}

A.hbm.xml
<class name="A" table="A" abstract="true"/>

...

<subclass 
        name="SubA" 
        discriminator-value="SUB_A"
        lazy="false"
    >
        <join table="TABLE_SUB_A">
                <key column="ID"/>

            <many-to-one name="d" 
        column="COL_D" 
                class="D"
                cascade="NONE"
                outer-join="true"
                unique="true"/>
        </join>
   </subclass>
   </class>

D.hbm.xml
<one-to-one name="subA"
   class="SubA"
   property-ref="d"/>
EN

回答 1

Stack Overflow用户

发布于 2009-11-06 09:46:44

您的代码没有在A类中显示鉴别器列定义,我假设它就在那里。此外,没有“outer join”属性;它应该是fetch="outer-join"

除此之外,它看起来还可以-- d属性应该在subA上查找,而不是在A上查找。您确定您在发布时没有更改任何内容(我不认为您的真实实体称为AD,因此请仔细检查您的映射是否确实如图所示)。

另外,为什么要对每个子类的表使用鉴别器?使用joined-subclass使得映射更容易,没有多余的列;鉴别器的唯一优点是避免对子类表进行外连接,这通常不是什么大问题(另外,您也没有在子类上指定fetch="select" )

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1684822

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档