我该如何进行以下hibernate映射?

时间:2012-06-19 15:38:53

标签: java hibernate

我有以下数据库架构:

table a {
    id,
    state
}

table b {
    id,
    a_id,
    is_valid,
    amount
}

我希望有一个hibernate映射,只有当a.state具有特定值时才从表b中获取值。这是我的hibernate映射(使用了jBoss Documentation

中的示例
<discriminator column="state" type="string"/>
<subclass name="ClassB" discriminator-value="VALUE1">
    <join table="b">
        <key column="a_id"/>
        <property name="amount" column="amount"/>
    </join>
</subclass>

当我这样做时,我的xml显示语法错误,指出必须遵循层次结构。

我正在做的是否正确,如果没有,如果有人能告诉我前进的方向会很棒。感谢。

P.S - 表b中的多个条目将具有a_id列。但是,b中只有一行会设置is_valid值,如果我在POJO中得到这一行就足够了

1 个答案:

答案 0 :(得分:1)

在我看来,您正在使用鉴别器策略映射每个子类的表。这意味着表a和表b之间存在1 - 1行的相关性,其中表b(子类)的主键也是表a中的外键。

但是,你的映射有点奇怪,因为你有

<key column="a_id" />

通常这应该是

<key column="id" />

并且没有“a_id”列。

但是,您的数据库设计看起来像是一对多关系,而不是子类关系。

如果没有你自己的物品,我真的不能说你想要做什么。

看看继承的hibernate文档。

http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html/inheritance.html