我在使用JPA时遇到了麻烦

时间:2014-03-28 21:44:47

标签: java jpa transactions persistence

我有两张桌子

议程

@Entity
@Table (name = "agenda")

public class Agenda {

    @Id
    @GeneratedValue
    private int idAgenda;

    @OneToMany(orphanRemoval=true,cascade = CascadeType.REMOVE)
    private List<Consulta> consultas;
}

@Entity(name = "Consulta")
public class Consulta {

@Id
@GeneratedValue
private int idConsulta;

@Column
private Calendar dataConsultas;

@Column
private  Time hora;

@ManyToOne
private Paciente paciente;

@OneToOne
private Colaborador colaborador;
}

当我运行java时,它创建了第三个名为:agenda consulta的表。当我试图删除桌上的咨询时,咨询&#39;我这样做:

    em.getTransaction().begin();
    em.remove(consulta);
    em.getTransaction().commit();

但有错误导致外国人。这是怎么回事?

1 个答案:

答案 0 :(得分:0)

您正在尝试删除仍由议程引用的咨询。所以外键约束禁止你这样做,因为它会使数据库不连贯。

确保在删除之前删除对Consulta的引用,找到包含此咨询的议程,并从议程的咨询列表中删除咨询。