java - 删除关系 OneToMany 双向记录?

标签 java hibernate jpa one-to-many many-to-one

我正在寻找如何删除关系 OneToMany/ManyToOne 的寄存器。 问题是,当我执行 EntityManager.remove() 时,所有记录都会被删除,并且我希望仅删除子项(DiasTurma),而不删除您的父项(Turma)。

这是我正在尝试的方法

// parent
@Entity
public class Turma implements Serializable{
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue
    private Integer id;

    @NotNull @Column(unique = true)
    private String turmaNome;    

    @OneToMany(mappedBy = "turma", fetch = FetchType.LAZY, cascade = CascadeType.ALL, orphanRemoval = true)
    private List<DiasTurma> diasTurma = new ArrayList<DiasTurma>();
    //gets/sets


//child
@Entity
public class DiasTurma implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id @GeneratedValue
    private Integer id;

    private String horaInicio;
    private String horaFim;
    private String diaSemana;

    @ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY) 
    @JoinColumn(name = "id_turma")
    private Turma turma;
    //gets/sets


// DAO
/** remove DiasTurma of Turma */
public void removeDiasTurma(){
        DiasTurma dias = (DiasTurma)em.find(DiasTurma.class, 3);
        em.getTransaction().begin();
        em.remove(dias);
        em.getTransaction().commit();
        em.close();
    }

方法removeDiasTurma()执行删除,但包括Turma记录在内的所有记录都被删除。

例如如何仅删除记录 3?

最佳答案

The problem is when I do EntityManager.remove(), all records are removed and I want that only child(DiasTurma) is removed and not your parent(Turma)

发生这种情况是因为您明确要求级联删除:

@ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY) 

由于您指定了 cascade = ALL,因此在 DiasTurma 上完成的每个操作(包括 remove())都会级联到其父 Turma。

关于java - 删除关系 OneToMany 双向记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25236742/

相关文章:

java - 输入监听器在类之间停留

java - 查询挂起oracle 10g

java - 没有 [javax.persistence.EntityManager] 类型的限定 bean

java - GWT Gilead(JPA 配置)

java - Selenium WebDriver + Java - 如何为 Firefox 配置代理设置?

java - 列表抛出 UnsupportedOperationException

java - 自定义 Eclipse 格式化程序以删除不必要的大括号

java - Spring JPA 缓存 - 我是否应该避免从存储库中多次检索相同的资源?

java - Hibernate工具可以生成JPA POJO吗?

Spring数据、JPA和Hibernate : why does my object gets saved with the save statement removed?