2013-01-18 178 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;