Qual a melhor forma de relacionar esta entidade

Ola á todos, na minha aplicação eu tenho uma entidade usuário que se relaciona de muitos pra muitos com a entidade cursos (um usuário pode se matricular em muitos cursos e um curso pode ter vários usuários)
E a entidade cursos se relaciona de um para muitos com a entidade aula (um curso tem varias aulas, mas uma aula só tem um curso)

Estou fazendo a minha aplicação com spring boot e para eu dizer que o usuario se matriculou em um curso eu so tenho que fazer:

usuario.setCurso(curso)
usuarioRepository.save(usuario)

ao relacionar um curso ao usuário posso dizer que ele se matriculou no curso. Mas como relacionar o usuário a uma aula para saber por exemplo quais aulas ele concluiu? eu posso aproveitar este relacionamento do usuario muitoParaMuitos curso umParaMuitos aula ou tenho que criar um relacionamento muitos para muitos de usuario com aula?

Aqui vai um pequeno exemplo das entidades para exemplificar melhor como esta o relacionamento:

@Entity
public class Usuario{

private long id;
private String nome;
private String senha;
@ManyToMany(mappedBy = “usuariosMatriculados”, fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinTable
private List cursosMatriculados;

//getters and setters
}

@Entity
public class Curso{

private long id;
private String nomeCurso;
private String descricaoCurso;
@ManyToMany(mappedBy = “cursosMatriculados”, fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinTable
private List usuariosMatriculados;
@OnetoMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
private List aulas;
//getters and setters
}

@Entity
public class Aula{

private long id;
private String nomeAula;
private String conteudoAula;
@ManyToOne(mappedBy = “aulas”, fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinTable
private Curso curso;
//getters and setters
}

não entendi… não abandonei nada não. Ainda não tive uma resposta

Eu abandonei a resposta pois aquilo que postei estava errado, desculpas.

ahh ta, entendi rs

JPA é algo meio novo para mim e até a pouco tempo usava apenas SQL queries.

É possível criar uma View que faz esta relação que seria tratada como uma tabela para o JPA.


Essa é só uma alternativa, eu não sei qual seria a melhor opção.

1 curtida

vou estudar um pouco, nao entendo praticamente nada de sql rs, vou focar nessa view sql pra tentar implementar ainda hoje. Obrigado