Olá bom dia!!
Estou com uma dificuldade em fazer uma consulta na tabela auxiliar turma_aluno
na tabela turma eu tenho um Set, esse relacionamento turma x aluno é salvo na tabela auxiliar turma_aluno , o que acontece é que quando vou cadastrar uma nova turma e inserir alunos na mesma, se eu inserir um novo aluno que já esteja vinculado a uma outra turma ocorre uma EXCEPTION, então preciso obter uma lista de todas as matriculas que estão nesta tabela turma_aluno, para depois comparar com a matricula que eu quero inserir, caso ela já esteja associada a outra turma, apresento uma msg informando isto ao usuário, caso não esteja associado eu faço a inclusão desta matricula na nova turma
Sim, mas qual a exception? Tem o stackTrace aí?
EXCEPTION: ERROR: Duplicate entry ‘11’ for key ‘UK_2jgvilwikr784helj4tml2kq8’ mas esse erro ocorre porquê o aluno já esta cadastrado em outra turma, é isso que eu quero saber como verificar nesta tabela auxiliar se existe ou não a matricula cadastrada, caso exista eu possa exibir uma mensagem informando isso ao usuário, caso nao exista o usuario possa cadastrar essa matricula em outra turma
Mapeamento
@OneToMany
@JoinTable( name = "turma_aluno",
joinColumns = {@JoinColumn(name = "idTurma", referencedColumnName = "idTurma")
},inverseJoinColumns = {@JoinColumn(name = "matricula", referencedColumnName = "matricula" )})
public Set<Aluno> getAlunos() {
return this.alunos;
}
Um select simples de turma, usando como argumento aluno, deve resolver.
Criteria criteria = session.createCriteria(Turma.class);
criteria.createAlias("alunos", "aluno");
criteria.add(Restrictions.eq("aluno.id", idDoAluno);
return criteria.list();
[quote=drsmachado]Um select simples de turma, usando como argumento aluno, deve resolver.
Criteria criteria = session.createCriteria(Turma.class);
criteria.createAlias("alunos", "aluno");
criteria.add(Restrictions.eq("aluno.id", idDoAluno);
return criteria.list();
[/quote]
Opaaa vlw de mais voçê é o cara
Não era isso que eu queria mas esse seu exemplo é bem melhor
pois agora posso informar até em qual turma o aluno esta matriculado
muito obrigado vlw mesmo.
Criteria criteria = HibernateUtil.getSession().createCriteria(Turma.class);
criteria.createAlias("alunos", "aluno");
criteria.add(Restrictions.eq("aluno.matricula","1"));
criteria.list();
List<Turma> l =criteria.list();
l.forEach( a ->{
System.out.println("Aluno: "+a.getSerie() + " "+a.getTurma());
});
É conversando que surgem ideias. A nossa área precisa disso.
Qualquer coisa, dá um alô.
Abraço.