CascadeType.Merge与Spring Data的实体关系

时间:2017-12-07 08:52:54

标签: hibernate jpa spring-data spring-data-jpa

我有两个实体(Consultancy - 所有者和InterviewType@ManyToMany双向关系。用户可以将访谈类型附加到咨询。我知道在我们使用Hibernate的情况下,我们可以在merge()上调用EntityManager方法来持久保存新的瞬态实体或更新分离对象,但是save()方法呢?在Spring Data或Spring Data中有另一种方法吗?它会对@ManyToMany关系的依赖实体产生一些影响吗?如果是'是'以什么方式?它是否会引用Hibernates merge()方法?

1 个答案:

答案 0 :(得分:0)

如果你看一下2.0.2版本的实现:

@Transactional
public <S extends T> S save(S entity) {

    if (entityInformation.isNew(entity)) {
        em.persist(entity);
        return entity;
    } else {
        return em.merge(entity);
    }
}

如果持久性提供程序确定传递的实体new ..没有id /不由持久性提供程序管理,则会在引擎下调用合并。这样就可以了解新的&#39;取决于EntityInformation的底层实现。

一般情况下,它应该在有需要时调用合并,虽然我有必须编写自己的自定义合并逻辑的情况,因为隐式merge没有被调用