1

クラス ClassA が TableA にマップされています。マッピングもあり、エンティティ名は EntityA です。

ここで、TableA の ClassA 間に EntityATwo という名前の別のマッピングを作成する必要がありますが、少し異なります。

EntityA から EntityATwo へのマッピングをコピーして貼り付けることはできますが、それを維持するのは非常に困難です。

したがって、私の質問は、EntityATwo のマッピングを作成する方法です。ここで、EntityATwo と EntityA の違いのみを宣言し、残りのマッピングは EntityA から派生します。

ありがとう、フランツ

4

1 に答える 1

1

私はそれを直接行う方法を知りません。しかし、あなたの許可を得て、私は詳しく説明するかもしれません.


私たちのコードでは、通常、1 つの Java クラスを 1 つのセマンティックにマップすることを好みます (チェックされていない文字列よりもコンパイル チェックされたクラスを使用することを好みます)。したがって、エンティティ名が異なるテーブルにクラスを 2 回マッピングする代わりに、2 つのクラスをマッピングします。次のようになります。

  • ClassA を共通のスーパークラスとして、ほとんどのマッピングが共通です。このすべてのマッピングで (hbm.xml で) 宣言されます。
  • ClassA1 は ClassA を拡張し、独自のマッピングを提供します (必要に応じて Java コードも提供します。それ以外の場合は空になる可能性があります)。ClassA から共通のマッピングを継承します。
  • ClassA2も

もう重複はありません。そして、セマンティクスについて何かを得ることができます。


もう 1 つの可能性は、共通のマッピングに対してのみ、Java クラスで注釈を使用することです。Hibernate では、注釈は xml マッピングによってオーバーライド (または完了) できます。したがって、 xml の関連部分のみをオーバーライドでき、重複はないと思います。

于 2009-09-03T10:03:50.007 に答える