Java 休眠一对多插入

Java 休眠一对多插入,java,hibernate,hibernate-mapping,Java,Hibernate,Hibernate Mapping,如你所见,我有两个表提供,项目 我在插入项目时遇到问题,每次我添加报价时,它都不会插入项目列表。报价包含一个项目列表。 这是我的密码: 报价: @Entity public class Offer{ @Id @GeneratedValue int id; private String name; private String description; @OneToMany(mappedBy="offer") private List<Item> items; //getters

如你所见,我有两个表提供,项目 我在插入项目时遇到问题,每次我添加报价时,它都不会插入项目列表。报价包含一个项目列表。 这是我的密码:

报价:

@Entity
public class Offer{

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

@OneToMany(mappedBy="offer")
private List<Item> items;
//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

已成功添加优惠,但未添加项目。映射有问题吗?

是否尝试在OneToMany端放置级联选项?

是否尝试在OneToMany端放置级联选项?

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


是的,我加上了,它正在工作。两边都有cascade选项可以吗?cascade选项通过可达性定义保存/删除,所以如果您保存了一个项目,并且希望它的报价也会更新,那么您需要在那里进行cascade。但是,如果提供对象已经是一个托管bean,则不会出现这种情况。如果不设置item.setOfferoffer;,是否有一种方法使IdOffer不为null;?是的,我加上了,它正在工作。两边都有cascade选项可以吗?cascade选项通过可达性定义保存/删除,所以如果您保存了一个项目,并且希望它的报价也会更新,那么您需要在那里进行cascade。但是,如果提供对象已经是一个托管bean,则不会出现这种情况。如果不设置item.setOfferoffer;,是否有一种方法使IdOffer不为null;?
 @OneToMany(cascade = { CascadeType.ALL }, orphanRemoval = true, mappedBy = "offer")
private List<Item> items;
@ManyToOne
@JoinColumn(name="idOffer")
private Offer offer;