Galera podem me ajudar, estou tentando remover um item de uma lista, mas ao remover o item e utilizar o método update() do hibernate não muda nada.
Minha classe chamada Turma tem a seguinte lista:
Posta essa sua classe BandoDeDados, por favor.
Vc chama a transação, persiste e faz o commit? Enfatize os métodos de persistência, pois dessa forma ficou muito superficial.
S
sidronio
Utiliza o Cascade.
J
Jeanderson_Silva
Sim. faço tudo isso ai, o método da classe da classe BancoDeDados é este:
publicstaticResultadoBDupdate(Objectobjeto){ResultadoBDresultado=newResultadoBD();try(Sessionsessao=HibernateUtil.getSession()){Transactiontransacao=sessao.beginTransaction();sessao.update(objeto);transacao.commit();sessao.close();resultado.setResultado(true);resultado.setMensagem("Executado com sucesso!");returnresultado;}catch(HibernateException|NoClassDefFoundErrorex){resultado.setResultado(false);resultado.setMensagem(ex.getMessage());Log.salvaLogger(BancoDeDados.class.getName(),"update()",ex.getMessage());returnresultado;}catch(PersistenceExceptione){resultado.setResultado(false);resultado.setMensagem(e.getMessage());Log.salvaLogger(BancoDeDados.class.getName(),"update()",e);returnresultado;}}
ele faz update somente nos atributos normais, como nome da turma. agr se removo algo da lista ele não atualiza. mas ao adicionar um novo aluno na turma, ai já o update na lista acontece.
Por enquanto a solução q encontrei foi criar uma QUERY com comando SQL para deletar o aluno da tabela.
Stringsql="DELETE FROM alunos_turmas WHERE aluno_id="+aluno.getId().toString()+"";
Mano tentei os cascade aqui, mas mesmo assim não vai.
S
sidronio
Tenta ai a propriedade OrphanRemoval = true na anotação do relacionamento.
R
raphaeloneves
Tenta dar um sessao.flush(); após realizar o commit da transação.
J
Jeanderson_Silva
Mano pelo o que vi, não tem esse OrphanRemoval para relações @ManyToMany, mas obrigado mesmo assim
J
Jeanderson_Silva
Mano realmente não sei pq mesmo assim não vai. mas paras outras relações vai de boa. o jeito que achei foi fazer uma SQL query na mão mesmo para remover o aluno da lista. mas obrigado mesmo assim.