1

やあみんな、私は次のマップ*を持っていますが、これは私に多くの問題を引き起こしています:

Map<MetricSourceInterface, AliasesInterface>

MetricSourceInterface は、単純なプロパティを持つエンティティです。AliasesInterface は、ID と文字列のリストのみを持つエンティティです。

Hibernate はデータベース スキーマを作成しているので、変更しても問題はありません。

余談ですが、これはマッピングを試みることによるサブ問題です。

Map<MetricSourceInterface, List<String>>

これを解決する適切な方法を知っている人はいますか?

これには1つだけ制限があります.AliasesInterfaceまたはListのUserTypeを作成したくありません

事前にThx :)


* pstanton の修正で編集 :)

4

1 に答える 1

4

AliasesInterface実際に Hibernate の意味でのエンティティである限り、これをマッピングしても問題はありません。

@OneToMany(targetEntity=AliasInterface.class)
@MapKeyManyToMany(targetEntity=MetricSourceInterface.class,  joinColumns=@JoinColumn(name="metric_source_id"))
private Map<MetricSourceInterface, AliasesInterface> myMap;

上記は、 と の両方がエンティティであるAliasInterfaceと想定していることに注意してください。MetricSourceInterfaceそれらが実際にインターフェースである場合は、代わりに具体的な実装を参照する必要があります。

@MapKeyManyToManyJPAへのHibernate拡張であることを覚えておいてください。コレクションのマッピングに関する詳細/例は、Hibernate docs にあります。

更新: XML マッピング ファイルを使用した同じアプローチ:

<map name="myMap">
  <key column="owner_id"/> <!-- FK to owner entity table -->
  <map-key-many-to-many column="metric_source_id" class="MetricSourceInterface"/>
  <one-to-many class="AliasesInterface"/>
</map>

詳細はこちらに、その他の例はこちらにあります。

于 2009-12-22T01:31:25.187 に答える