0

アプリケーションにいくつかのクラスがあります。

  1. Individualテーブルにマップされた Individual 。
  2. Companyテーブルにマッピングされた Company
  3. Addressテーブルにマップされた Address 。

個人Addressの間、およびCompanyAddressの間に on-to-may 関連付けを構築したいと考えています。これは、当然のことながら、個人と会社の両方が 0 個以上のアドレスを持つことができるためです。また、Address テーブルの同じ列を使用して、DB でこの関連付けを表現したいと考えています。1 つの列は所有者エンティティの ID を参照し、もう 1 つの列はそのタイプを示します。したがって、SQL では、ID 5 の個人のアドレスを抽出するために次のようなことを行います。

select * from Address where ref_id = 5 and ref_type = 'Individual'

なぜ私がそれを行うのか疑問に思っている人のために、私の動機は 2 つあります。

  1. 同様のデータを使用するテーブル/列を統合します。
  2. より一般的なスキーマを使用して、DDL を必要とせずにドメイン モデルの将来の拡張を提供します。

問題は、Hibernate でそのような関連付けをどのように定義すればよいかということです。私はHibernateが初めてで、数時間苦労した後、それを行う方法を見つけることができませんでした.

ありがとう。

4

1 に答える 1

0

xmlを使用:

<set name="adresses" where="ref_type = 'Individual'">
  ...
</set>

私の知る限り、コレクション プロパティの where 句を指定する hibernate アノテーションがあります。

于 2012-06-11T08:27:51.263 に答える