Dúvida como fazer o relacionamento de uma lista de chamada de turmas de alunos Spring Boot

3 respostas
thymeleafjpaspring-bootmysql
D

Olá, me deparei com uma situação e não estou conseguindo enxergar a solução pra o relacionamento dessas entidades(talvez seja bem fácil e não estou visualizando).
É o seguinte, tenho uma entidade Turma que tem uma lista de alunos (@manyToMany), porém quero fazer uma lista de chamada(lista de presença) colocando a data e ao selecionar a turma trazer os alunos dessa turma.

Entidade TURMA

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

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long codigo;

@NotNull(message = "*O campo Nome é de preenchimento obrigatório")
private String nome;

private String hora_inicio;

private String hora_fim;

@NotNull(message = "*O campo Vagas é de preenchimento obrigatório")
private int vagas;

@NotNull(message = "*O campo Professor é de preenchimento obrigatório")
private String professor;

@ManyToMany
@JoinTable(
    name="AlunosTurmas", //nome da nova tabela
    uniqueConstraints  = @UniqueConstraint(columnNames = { "codigo_turma", "id_aluno" }), //id curso e turma são únicos 
    joinColumns        = @JoinColumn(name = "codigo_turma" ), //chave estrangeira de turma
    inverseJoinColumns = @JoinColumn(name = "id_aluno")       //chave estrangeira de aluno
)
private List<Aluno> alunos;

Entidade Aluno

@Entity
public class Aluno implements Serializable{
	
	 private static final long serialVersionUID = 1L;
	
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	private Long id;
	
	@NotNull(message = "*O campo Nome é de preenchimento obrigatório")
	private String nome;
	
	private String apelido;

@ManyToMany
@JoinTable(
        name="AlunosTurmas", 
        uniqueConstraints = @UniqueConstraint(columnNames = { "codigo_turma", "id_aluno" }),
        joinColumns        = @JoinColumn(name = "id_aluno"), 
        inverseJoinColumns = @JoinColumn(name = "codigo_turma")
)
private List<Turma> turmas;

3 Respostas

J

Um dos lados tem que ser o “dono” da relação, se fizer de ambos os lados, não vai funcionar!

Exemplo:

Altere para:

@ManyToMany(mappedBy = "alunos")
private List<Turma> turmas;

Deste modo, a classe Turma é a classe detentora da relação!

L

Essa data da lista de chamada ficará em qual tabela? E como é o relacionamento de turma e aluno com essa tabela?

D

Então Lucas é o seguinte, na verdade eu quero criar uma lista de chamada dos alunos onde insiro a data, seleciono a turma específica que me retornará a lista de alunos dessa turma selecionada onde vou marcar checkbox a presença de cada (linha) aluno e salvar.

Criado 19 de agosto de 2020
Ultima resposta 20 de ago. de 2020
Respostas 3
Participantes 3