Olá, estou tentando criar um relacionamento ManyToMany com as entidades, que estarão abaixo, Aluno e Disciplina.
Ocorre que consigo persistir sem problemas, porém gostaria de adicionar uma restrição, que da forma que estou mapeando não está sendo adicionada:
Ao cadastrar Aluno com disciplinas, ele pode cursar, por exemplo, Português e Matemática, o que está correto. Porém eu consigo duplicar, exemplo:
João cursa Matemática, Português e Matemática.
Queria adicionar uma restrição para que isso não ocorresse, como poderia fazer isso?
Seguem as classes mapeadas:
Aluno
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(length = 11, unique = true)
private String cpf;
@Column(length = 25)
private String nome;
@Column(length = 25)
private String ultimoSobrenome;
@ManyToMany
private List<Disciplina> disciplinas;
Disciplina
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false, unique = true)
@Enumerated(EnumType.STRING)
private DisciplinasDisponiveis nome;
@ManyToMany(mappedBy = "disciplinas")
private List<Aluno> alunos;
Exemplo de como está agora e do que queria evitar:
+-----------+----------------+
| alunos_id | disciplinas_id |
+-----------+----------------+
| 1 | 1 |
| 1 | 2 |
| 1 | 5 |
| 1 | 1 |
+-----------+----------------+