0
@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;

Curso = Course Aluno = 学生

这就是我注释@ManyToMany 的方式。我的问题是,当还有一个学生与之相关时,我不应该能够删除课程,但是休眠让我删除该注册表而没有任何警告或错误。哦,是的,我已经尝试过仅在一侧执行 joinColluns 并在另一侧执行 mappedBy ,但仍然无法正常工作。

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

4

1 回答 1

0

您无法在映射中执行此操作,因为它非常不标准。一方面,如果您发出一条删除语句,您希望要么删除一行,要么报告一个 SQL 异常。如果您想有条件地不删除该行,则必须在业务逻辑中实现它。

于 2013-09-30T17:35:58.343 回答