2

在課堂上令我有一個屬性:訂單行我有一個屬性休眠@ManyToOne未能properply插入,因爲FK ID尚未創建

@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "order") 
private Set<OrderLine> orderLines;

在類:

@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL) 
@JoinColumn(name="OrderID") 
private Order order;

在DB中,orderline只是有一個FK指向一個訂單。這是問題所在

我手動構建一個沒有ID的Order對象,因爲它被設置爲自動生成,我使用相應的DAO進行保存。訂單表被正確填寫,但訂單行表不是。

訂單表中訂單的FK字段留空。我認爲這是因爲在插入時訂單ID仍然沒有ID。

有沒有簡單的方法來解決這個問題?

回答

3

你如何堅持你的orderline實例?

您必須在訂單行實例中設置訂單對象的實例。

例如:

Order order = new Order(); 
// populate order 



Set<OrderLine> orderLines = new HashSet<OrderLine>(); 

OrderLine orderline = new OrderLine(); 
orderline.setOrder(order); // set the order instance 
// populate orderline 

orderLines.add(orderline); 

order.setOrderLines(orderLines); 

order.persist(); 
+0

非常感謝!我忘了把訂單行轉到訂單上,例如:orderline.setOrder(order); – broli 2011-04-16 18:51:57