0

私は次のDBスキーマを持っています:

table a {
    id,
    state
}

table b {
    id,
    a_id,
    is_valid,
    amount
}

a.state に特定の値がある場合にのみ、テーブル b から値をフェッチする休止状態のマッピングが必要です。これは私が持っていた休止状態のマッピングです(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 に表示されました。

私がしていることは正しいですか、そうでない場合は、誰かが私に道を示すことができれば素晴らしいと思います. ありがとう。

PS - テーブル b の複数のエントリには a_id 列があります。ただし、b の 1 行のみに is_valid 値が設定されており、POJO でこの行を取得すれば十分です。

4

1 に答える 1

1

サブクラスごとにディスクリミネーター戦略を使用してテーブルをマッピングしているように見えます。これは、テーブル a とテーブル b の間に 1 - 1 行の相関があることを意味し、テーブル b の主キー (サブクラス) はテーブル a への外部キーでもあります。

ただし、マッピングは少し奇妙です

<key column="a_id" />

通常、これは

<key column="id" />

また、「a_id」列はありません。

ただし、データベースの設計は、サブクラスの関係ではなく、1 対多の関係のように見えます。

あなたのオブジェクト自体がなければ、あなたが何をしようとしているのか本当に言えません。

継承に関する休止状態のドキュメントを見てください。

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

于 2012-06-19T16:18:59.100 に答える