Hibernate:session.merge执行insert而不是update?

时间:2015-09-07 14:46:24

标签: java hibernate jpa

我的代码中发生了一件奇怪的事情。

我使用了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");
        }
    }

1 个答案:

答案 0 :(得分:1)

我能够解决这个问题。 我通过向我的变量添加orphanRemoval属性来解决它。由于没有orphanRemoval属性,因此没有删除之前的属性,因此我在应用程序中收到了错误的数据。以下是更正后的代码。

@OneToMany(mappedBy = "printColor", fetch = FetchType.LAZY, cascade= {CascadeType.ALL}, orphanRemoval=true)
 private Set<PrintColorFormatter> printColorSets;