延迟加载问题何时将 child 添加到 parent - 休眠
LazyLoading issue when to add child to parent - hibernate
我有两个 classes:Bundle 和 Commodity,它们被定义为双向关系。假设我只有 1 个 Bundle 实体和 0 个 Commodity。如何创建商品并在商品和捆绑包之间建立关系?
@OneToMany(mappedBy="id", fetch=FetchType.LAZY, cascade=CascadeType.ALL)
List<Commodity> commodityList;
@ManyToOne
@JoinColumn(name="BUNDLE_ID")
private Bundle bundle;
在我的服务中 class 我试过这个:
// Add commodity instance to exiting bundle.
public void addCommodityToBundle(Bundle bundle, Commodity commodity) {
LOGGER.info("Create and Persist Commodity Instance to Bundle Entity");
Bundle attachBundle = bundleDao.merge(bundle);
attachBundle.getCommodityList().add(commodity);
commodity.setBundle(attachBundle);
bundleDao.update(attachBundle);
}
通过上述方法,第一个 运行 没问题。但是对于其他 运行s,我得到了 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".
我不知道为什么它一直试图与不存在的实体建立关系。我已经让很多记录器尝试调试并确保捆绑包存在于 table 中。知道我应该如何纠正实施吗?
@OneToMany
mappedBy
映射错误。
而不是:
@OneToMany(mappedBy="id", fetch=FetchType.LAZY, cascade=CascadeType.ALL)
List<Commodity> commodityList;
你应该有:
@OneToMany(mappedBy="bundle", fetch=FetchType.LAZY, cascade=CascadeType.ALL)
List<Commodity> commodityList;
我有两个 classes:Bundle 和 Commodity,它们被定义为双向关系。假设我只有 1 个 Bundle 实体和 0 个 Commodity。如何创建商品并在商品和捆绑包之间建立关系?
@OneToMany(mappedBy="id", fetch=FetchType.LAZY, cascade=CascadeType.ALL)
List<Commodity> commodityList;
@ManyToOne
@JoinColumn(name="BUNDLE_ID")
private Bundle bundle;
在我的服务中 class 我试过这个:
// Add commodity instance to exiting bundle.
public void addCommodityToBundle(Bundle bundle, Commodity commodity) {
LOGGER.info("Create and Persist Commodity Instance to Bundle Entity");
Bundle attachBundle = bundleDao.merge(bundle);
attachBundle.getCommodityList().add(commodity);
commodity.setBundle(attachBundle);
bundleDao.update(attachBundle);
}
通过上述方法,第一个 运行 没问题。但是对于其他 运行s,我得到了 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".
我不知道为什么它一直试图与不存在的实体建立关系。我已经让很多记录器尝试调试并确保捆绑包存在于 table 中。知道我应该如何纠正实施吗?
@OneToMany
mappedBy
映射错误。
而不是:
@OneToMany(mappedBy="id", fetch=FetchType.LAZY, cascade=CascadeType.ALL)
List<Commodity> commodityList;
你应该有:
@OneToMany(mappedBy="bundle", fetch=FetchType.LAZY, cascade=CascadeType.ALL)
List<Commodity> commodityList;