0

私にはクラスProductとクラスPartがあり、すべてのパーツが1つの製品にのみ属することができます。各製品にはその部品のリストがありますが、部品にはその製品への参照がありません。

@Entity
@Table (name= "products")
class Product {
  @Id
  @GeneratedValue
  @Column(name = "Id")
  int id;

  @Column(name = "Name")
  String name;

  @???
  List<Part> myParts;

部品:

@Entity
@Table (name= "parts")
class Part {
  @Id
  @GeneratedValue
  @Column(name = "Id")
  int id;

  @Column(name = "Name")
  String name;
}

私のデータベースでは、テーブル「products」はそのパーツに関する情報を格納していませんが、「parts」テーブルは行「product_id」の製品を追跡しています。

製品:

| id | 名前|

部品:

| id | 名前| procuct_id |

OO-とORMの「世界」のこの反対のアプローチがあるのはごく普通のことだと思いますが、Hibernateを使用してオブジェクトをこの構造に永続化する方法を見つけることができません。

1対多の注釈については、part-idが製品テーブルに格納されている例のみを見つけました。多対1の場合、パーツオブジェクトで製品への参照が必要であるように見えますね。

私が間違っていることを願っています!;)

クラスやテーブルの構造を変更せずにこれをマップする方法があるかどうか誰かが知っていますか?

(xmlではなく注釈で説明できればとても嬉しいです:))

4

1 に答える 1

0

1対多の一方向マッピングを意味していると思います。次のようにしてみてください:

@OneToMany
@JoinColumn(name="product_id")
List<Part> myParts;

ここで例を見ることができます@OneToMany。そのリンクの「例 3」を確認してください。


注:テーブルにproduct_idas 外部キーがあるため、クラスにも型フィールドをparts含めることをお勧めします。ProductPart

于 2012-11-11T22:35:20.843 に答える