0

エンティティ「注文」と「アイテム」の間のサンプル m:n 関係をモデル化したい

対応するマッピング セクションは次のとおりです。

Order.java:

...
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="ORDER_ID")
private Long orderId;

@Column(name="ORDER_DESCRIPTION")
private String description;

@JoinTable(name ="ORDER_ITEMS",
    joinColumns=@JoinColumn(name="ORDER_ID", referencedColumnName="ORDER_ID"),
    inverseJoinColumns=@JoinColumn(name="ITEM_ID", referencedColumnName="ITEM_ID"))
private Set<Item> items;
...

アイテム.java:

...
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ITEM_ID")
private Long itemId;

@Column(name = "ITEM_DESCRIPTION")
private String description;

@Column(name = "ITEM_PRICE")
private Long price;

@ManyToMany(mappedBy="items")
private Set<Order> orders;
...

特定のアイテムで参照されている注文を逆に取得できない理由を知っていますか? 部分@ManyToMany(mappedBy="items")は、「この関係の無効なマッピング タイプ」を示します。任意のアイテムと注文を作成し、アイテムを注文に追加し、その後アイテムに関するすべての注文を取得できると思いました。

私の場合、item.getOrders() は NullPointerException を返します。

どうもありがとう!

4

1 に答える 1

2

単純に、アイテムに ManyToMany アノテーションを追加するのを忘れたために:

@ManyToMany
@JoinTable(name ="ORDER_ITEMS",
    joinColumns=@JoinColumn(name="ORDER_ID", referencedColumnName="ORDER_ID"),
    inverseJoinColumns=@JoinColumn(name="ITEM_ID", referencedColumnName="ITEM_ID"))
private Set<Item> items;
于 2013-05-02T07:48:09.933 に答える