1

Shipment エンティティと Product エンティティがあります。各出荷は、任意の数量の任意の数の製品で構成されます。つまり、出荷には、java.util.Map である products という名前のフィールドがあり、キーは出荷される製品であり、値は出荷される製品のインスタンスの数です。

それを休止状態の注釈付きのデータベースにマップするにはどうすればよいですか?

4

2 に答える 2

1

これはあなたがしなければならないことです。フィールドはクラスにmap属し、それぞれが出荷された製品の数にShipmentマップされます。Product

これは、hibernate で生成された ID に依存しないクラス Product で equals および hashCode メソッドを適切に定義しない限り機能しません。(または、ここで全文を読んでください)。

@CollectionOfElements(targetElement=Integer.class)
@MapKeyManyToMany(targetEntity=Product.class)
private Map<Product, Integer> map = new HashMap<Product, Integer>();
于 2009-02-10T15:06:26.353 に答える
0

これは私には少し奇妙な設計のように思えますが、私の理解が正しければ、次のようなデータベース スキーマが必要になるでしょう。

  • IDを持つ出荷テーブル
  • この ID を参照する外部キーを持つ製品テーブル

これは基本的なことです。出荷側からは基本的な 1 対多の関係であり、もちろんその逆では多対 1 の関係です。例を挙げることはできますが、実際には休止状態のドキュメント(マップの例については下にスクロールします) でカバーされているようです。その xml がどのように注釈にマップされるかについて、いくつかの非常に難しい考えがあなたを圧倒するはずです。リンクされた例では式を使用しているように見えるため、純粋なJPAでそれを実行しようとすると、問題が発生する可能性があります。

于 2009-02-05T23:15:21.430 に答える