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