Shipment エンティティと Product エンティティがあります。各出荷は、任意の数量の任意の数の製品で構成されます。つまり、出荷には、java.util.Map である products という名前のフィールドがあり、キーは出荷される製品であり、値は出荷される製品のインスタンスの数です。
それを休止状態の注釈付きのデータベースにマップするにはどうすればよいですか?
Shipment エンティティと Product エンティティがあります。各出荷は、任意の数量の任意の数の製品で構成されます。つまり、出荷には、java.util.Map である products という名前のフィールドがあり、キーは出荷される製品であり、値は出荷される製品のインスタンスの数です。
それを休止状態の注釈付きのデータベースにマップするにはどうすればよいですか?
これはあなたがしなければならないことです。フィールドはクラスに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>();
これは私には少し奇妙な設計のように思えますが、私の理解が正しければ、次のようなデータベース スキーマが必要になるでしょう。
これは基本的なことです。出荷側からは基本的な 1 対多の関係であり、もちろんその逆では多対 1 の関係です。例を挙げることはできますが、実際には休止状態のドキュメント(マップの例については下にスクロールします) でカバーされているようです。その xml がどのように注釈にマップされるかについて、いくつかの非常に難しい考えがあなたを圧倒するはずです。リンクされた例では式を使用しているように見えるため、純粋なJPAでそれを実行しようとすると、問題が発生する可能性があります。