2013-01-18 174 views
1

正如你可以看到我有兩個表(提供,項目) 我有一個插入項目的問題,每次我添加提供它不插入項目列表。優惠包含物品清單。 這裏是我的代碼:休眠一對多插入

提供:

@Entity 
public class Offer{ 

@Id 
@GeneratedValue 
int id; 
private String name; 
private String description; 

@OneToMany(mappedBy="offer") 
private List<Item> items; 
//getters and setters 

項:

@Entity 
public class Item{ 

@Id 
@GeneratedValue 
int idItem; 
private String name; 
private double price; 

@ManyToOne(cascade=CascadeType.ALL) 
@JoinColumn(name="idOffer") 
private Offer offer; 
// getters and setters 

,這裏是代碼填充表:成功添加

Offer offer=GenerateData.generateOffer(); 
    List<Item> items=new ArrayList<>(); 
    for(int i=0;i<3;i++){ 
     Item item=GenerateData.generateItem(); 
     items.add(item); 
     item.setOffer(offer); 
    } 
    offer.setItems(items); 

    pDB.addOffer(offer);//DAO for adding Offers into DB 

發售,但項目不是。映射有問題嗎?

回答

3

您是否嘗試在OneToMany端放置級聯選項?

+0

是我加入,它的工作。雙方都可以級聯嗎? –

+0

級聯選項定義通過可達性進行保存/刪除,因此,如果您曾保存過某個項目,並希望其更新也可以在那裏進行級聯。但是,如果商品對象已經是託管bean,則情況不會如此。 – Farzad

+0

如果沒有設置(item.setOffer(offer);),IdOffer不會爲null嗎? –

0

發售

@OneToMany(cascade = { CascadeType.ALL }, orphanRemoval = true, mappedBy = "offer") 
private List<Item> items; 

項目:

@ManyToOne 
@JoinColumn(name="idOffer") 
private Offer offer;