我的代码中发生了一件奇怪的事情。
我使用了session.merge,在更新主表时应更新子表。但对我来说,在我的子表中更新主表之后,我正在创建一个我需要解决的新记录。请指导。哪里可以问题?它可以是实体文件吗?
请找到以下代码。
public void update(List print) throws DataAccessException {
try {
if (print != null && print.size() > 0)
for (Object object : print) {
entityManager.merge(object);
}
} catch (HibernateException e) {
throw new DataAccessException("HibernateException");
}
}
答案 0 :(得分:1)
我能够解决这个问题。
我通过向我的变量添加orphanRemoval
属性来解决它。由于没有orphanRemoval
属性,因此没有删除之前的属性,因此我在应用程序中收到了错误的数据。以下是更正后的代码。
@OneToMany(mappedBy = "printColor", fetch = FetchType.LAZY, cascade= {CascadeType.ALL}, orphanRemoval=true)
private Set<PrintColorFormatter> printColorSets;