Hibernate @许多人在不应该删除时允许删除。违反合同 @ManyToMany(targetEntity=AlunoTO.class,fetch=FetchType.EAGER) @JoinTable(name=“TRE\u ALUNO\u CURSO”,joinColumns=@JoinColumn(name=“id\u CURSO”),inverseJoinColumns=@JoinColumn(name=“id\u ALUNO”)) 私人设置alunos; @ManyToMany(targetEntity=CursortReinamentTo.class) @JoinTable(name=“TRE\u ALUNO\u CURSO”,joinColumns=@JoinColumn(name=“id\u ALUNO”),inverseJoinColumns=@JoinColumn(name=“id\u CURSO”)) 私有集游标;

Hibernate @许多人在不应该删除时允许删除。违反合同 @ManyToMany(targetEntity=AlunoTO.class,fetch=FetchType.EAGER) @JoinTable(name=“TRE\u ALUNO\u CURSO”,joinColumns=@JoinColumn(name=“id\u CURSO”),inverseJoinColumns=@JoinColumn(name=“id\u ALUNO”)) 私人设置alunos; @ManyToMany(targetEntity=CursortReinamentTo.class) @JoinTable(name=“TRE\u ALUNO\u CURSO”,joinColumns=@JoinColumn(name=“id\u ALUNO”),inverseJoinColumns=@JoinColumn(name=“id\u CURSO”)) 私有集游标;,hibernate,constraints,Hibernate,Constraints,Curso=路线 Aluno=学生 这就是我对@ManyToMany进行注释的方式。我的问题是,当仍然有学生与课程相关时,我不应该删除该课程,但hibernate允许我在没有任何警告或错误的情况下删除该注册表。哦,是的,我已经试过只在一边做Joincollens,在另一边做mappedBy,但仍然不起作用 为什么我可以删除违反fk的课程?我的注释有什么问题吗?在映射中无法实现这一点,因为它非常不标准。首先,如果您发出delete语句,您希望删除一行,或者报告一个SQL异常。如果希望有条件地不删除

Curso=路线 Aluno=学生

这就是我对@ManyToMany进行注释的方式。我的问题是,当仍然有学生与课程相关时,我不应该删除该课程,但hibernate允许我在没有任何警告或错误的情况下删除该注册表。哦,是的,我已经试过只在一边做Joincollens,在另一边做mappedBy,但仍然不起作用


为什么我可以删除违反fk的课程?我的注释有什么问题吗?

在映射中无法实现这一点,因为它非常不标准。首先,如果您发出delete语句,您希望删除一行,或者报告一个SQL异常。如果希望有条件地不删除该行,则必须在业务逻辑中实现

@ManyToMany(targetEntity = AlunoTO.class, fetch=FetchType.EAGER)
@JoinTable(name = "TRE_ALUNO_CURSO", joinColumns= @JoinColumn(name ="id_curso"),     inverseJoinColumns = @JoinColumn(name = "id_aluno"))
private Set<AlunoTO> alunos;

@ManyToMany(targetEntity = CursoTreinamentoTO.class)
@JoinTable(name ="TRE_ALUNO_CURSO", joinColumns = @JoinColumn(name ="id_aluno"), inverseJoinColumns= @JoinColumn(name ="id_curso") )
private Set<CursoTreinamentoTO> cursos;