Java 懒散加载问题何时将子项添加到父项-休眠

Java 懒散加载问题何时将子项添加到父项-休眠,java,hibernate,jpa,orm,hibernate-mapping,Java,Hibernate,Jpa,Orm,Hibernate Mapping,我有两个类:Bundle和Commodity,它们被定义为双向关系。假设我只有1个捆绑实体,0个商品实体。如何创建商品并在商品和捆绑包之间建立关系 @OneToMany(mappedBy="id", fetch=FetchType.LAZY, cascade=CascadeType.ALL) List<Commodity> commodityList; @ManyToOne @JoinColumn(name="BUNDLE_ID") private Bundle bundle;

我有两个类:Bundle和Commodity,它们被定义为双向关系。假设我只有1个捆绑实体,0个商品实体。如何创建商品并在商品和捆绑包之间建立关系

@OneToMany(mappedBy="id", fetch=FetchType.LAZY, cascade=CascadeType.ALL)
List<Commodity> commodityList;

@ManyToOne
@JoinColumn(name="BUNDLE_ID")
private Bundle bundle;
通过上述方法,我在第一次跑步时没有遇到任何问题。但在其他运行中,我得到了DataIntegrityException,原因是:

Caused by: org.postgresql.util.PSQLException: ERROR: insert or update on table "commodity" violates foreign key constraint "fk_imi7xke3iqtx6d3g7ceqfs7ud"
  Detail: Key (id)=(2) is not present in table "bundle".
如果我再运行一次测试,我将得到

 Detail: Key (id)=(3) is not present in table "bundle".

我不知道为什么它一直试图与不存在的实体建立联系。我已经让很多记录器尝试调试,并确保捆绑包存在于表中。你知道我应该怎么做才能纠正实现吗?

映射的映射是错误的

而不是:

@OneToMany(mappedBy="id", fetch=FetchType.LAZY, cascade=CascadeType.ALL)
List<Commodity> commodityList;
@OneToMany(mappedBy=“id”,fetch=FetchType.LAZY,cascade=CascadeType.ALL)
列出商品清单;
你应该:

@OneToMany(mappedBy="bundle", fetch=FetchType.LAZY, cascade=CascadeType.ALL)
List<Commodity> commodityList;
@OneToMany(mappedBy=“bundle”,fetch=FetchType.LAZY,cascade=CascadeType.ALL)
列出商品清单;

显示绑定的ao.merge代码。
@OneToMany(mappedBy="bundle", fetch=FetchType.LAZY, cascade=CascadeType.ALL)
List<Commodity> commodityList;