Hibernate / JPA:合并时出现意外的级联

时间:2012-07-27 08:39:55

标签: hibernate jpa-2.0

Hibernate版本:4.0.1.Final / JPA

你好,

我想合并一个分离的表。执行entityManager.merge()后,将从数据库中选择所有子表。

子表在parentTable中注释为:

@OneToMany(fetch = FetchType.LAZY, mappedBy = "parentTable")

没有级联注释。我不想在合并时级联子表。 如何在合并时禁用级联?

@Transactional
public void save() {
    entityManager.merge(parentTable); //cascades child´s here
}

仅重新选择之前已提取的子表。

由于 tak3shi

1 个答案:

答案 0 :(得分:0)

默认情况下禁用所有级联。如果您不想级联任何内容,只需不要将cascade属性添加到@OneToMany注释。

另一方面,如果你想要除了合并之外的其他所有内容,请使用以下命令:

@OneToMany(fetch = FetchType.LAZY, 
           mappedBy = "parentTable" 
           cascade = {CascadeType.DETACH, CascadeType.PERSIST, 
                      CascadeType.REFRESH, CascadeType.REMOVE})

可能还有一些其他问题与级联合并操作无关。在这种情况下,显示实体以及如何创建和合并它们的代码将非常有用。