Java Hibernate:session.merge是否执行插入而不是更新?

Java Hibernate:session.merge是否执行插入而不是更新?,java,hibernate,jpa,Java,Hibernate,Jpa,我的代码中发生了一件奇怪的事情 我使用了session.merge,它在更新主表时应该更新子表。但对我来说,在我的子表中更新主表之后,将创建一条新记录,我需要解决这个问题。请导游。问题出在哪里?。它可以是实体文件吗 请查找下面的代码 public void update(List print) throws DataAccessException { try { if (print != null && print.size() >

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

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

我已经解决了这个问题。 我通过在变量中添加
属性来解决这个问题。由于没有删除
属性,因此没有删除早期的属性,因此我在应用程序中得到了错误的数据。下面是正确的代码

@OneToMany(mappedBy = "printColor", fetch = FetchType.LAZY, cascade= {CascadeType.ALL}, orphanRemoval=true)
 private Set<PrintColorFormatter> printColorSets;
@OneToMany(mappedBy=“printColor”,fetch=FetchType.LAZY,cascade={CascadeType.ALL},orphan=true)
私有集打印颜色集;

这是一个持久对象吗?它是否有一个有效的
id
?是的,Print是一个持久对象(对主表的引用),我有需要更新的子表。您可以添加相关的实体类吗?什么类型的对象包含Print
List
?我正在添加java文件