0
欲樣品M模型:實體「訂單」和n之間的關係「的項目」JPA:數據存取在一個雙向M:N關係
相應的映射部分是:
訂單。 Java的:
...
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="ORDER_ID")
private Long orderId;
@Column(name="ORDER_DESCRIPTION")
private String description;
@JoinTable(name ="ORDER_ITEMS",
[email protected](name="ORDER_ID", referencedColumnName="ORDER_ID"),
[email protected](name="ITEM_ID", referencedColumnName="ITEM_ID"))
private Set<Item> items;
...
Item.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;
...
你知道爲什麼我不能夠INVERS ely拿到一個特定項目引用的訂單?部分@ManyToMany(mappedBy =「items」)給了我一個「這種關係無效的映射類型」。我認爲我可以創建任意物品和訂單,將物品添加到訂單中,並隨後獲取與物品有關的所有訂單。
在我的情況下,item.getOrders()給了我一個NullPointerException。
非常感謝!
你是對的,它消除了「這種關係無效的映射類型」,而不是NullPointerException異常 – 2013-05-02 09:05:02
的NPE可能是由於這樣的事實那東西沒有初始化。向我們展示相關代碼,異常的堆棧跟蹤,並告訴我們它引用了哪一行代碼(通過編輯您的問題)。 – 2013-05-02 09:07:03
就是這樣。我沒有在構造函數中初始化HashSet。現在它按預期工作! :)順便說一句:我刪除了@ManyToMany非擁有方「項目」。這工作finde,但現在有兩個連接表創建在牆後面。你能解釋一下嗎? – 2013-05-02 09:43:38