Boa noite pessoal!
Estou com um problema aqui que não estou conseguindo resolver.
Eu possuo um relacionamento no banco NxN então criei uma classe bean para esse relacionamento.
Esse relacionamento representa alguns checkbox que tenho na View, no caso eu posso escolher mais de um checkbox
<h:outputLabel value="Motivos:" class="label"/>
<p:selectManyCheckbox value="#{alunoController.alunoMotivo}" layout="pageDirection">
<f:selectItems value="#{motivoController.listMotivos}" var="motivos"
itemValue="#{motivos.codMotivo}" itemLabel="#{motivos.nomeMotivo}"/>
</p:selectManyCheckbox>
Quando eu clico em cadastrar é chamado um método persistir que tenho na controle
public void persistir(){
try{
AlunoDAO alunoDAO = new AlunoDAO();
AlunoMotivoDAO alunoMotivoDAO = new AlunoMotivoDAO();
this.getAluno().setDataCadastramentoAluno(new Date());
alunoDAO.salvar(this.getAluno());
alunoMotivoDAO.salvar(this.getAlunoMotivo(), this.getAluno());
O aluno é persistido sem problemas, depois de persistir o aluno eu faço a persistência dos motivo(relacionamento NxN)
public void salvar(List<AlunoMotivo> alunoMotivo, Aluno aluno) throws Exception {
Connection conn = null;
PreparedStatement ps = null;
String SQL = null;
try{
for(int i = 0; i < alunoMotivo.size(); i++){
SQL = "INSERT INTO TB_ALUNO_MOTIVO(tb_aluno_ca, tb_motivo_cod_motivo) VALUES(?, ?)";
conn = this.conn;
ps = conn.prepareStatement(SQL);
ps.setLong(1, aluno.getCaAluno());
ps.setInt(2, alunoMotivo.get(i).getCodMotivo());//Quando chega aqui é lançado erro
ps.executeUpdate();
}
}catch(SQLException e){
throw new Exception("Não foi possível persistir os motivos! " +e);
}finally{
ConnectionFactory.closeConnection(conn, ps);
}
java.lang.ClassCastException: java.lang.String cannot be cast to br.com.tutoria.bean.AlunoMotivo
É lançado o erro acima. Eu debuguei e percebi uma coisa.
Quando faço alunoMotivo.get(i) há valor, porém ele retornar List. Agora quando faço alunoMotivo.get(i).getCodMotivo() parece que não retorna nada.
Não sei porque isso está acontecendo.