Pessoal to tentando usar o update do Hibernate para atualizar uma entrada na minha tabela, contudo, alem de alterar os valores da linha para o correto, ele, por algum motivo, esta duplicando esta linha, ou seja, alem de dar update na linha que eu queria ele tah criando outra entrada exatamente igual (alterando somente a chave primaria), ag sabe o que pode ser?
public void salvar(String nomeAntigo, String nomeNovo, String ativo, String menuRaiz) throws RNException{
SubMenu subMenu= new SubMenu();
SubMenuRN subMenuRN = new SubMenuRN();
subMenu = subMenuRN.getSubMenuPeloNome(menuRaiz);
Menu menu = new Menu();
menu = this.menuDAO.getMenuPeloNome(nomeAntigo); //aqui pego o valor atual da linha/objeto no BD
menu.setNome(nomeNovo);
menu.setIdSubmenu(subMenu);
if(ativo.equals("Sim"))
menu.setAtivo(true);
else
menu.setAtivo(false);
System.out.println(menu.getIdSessao());
this.menuDAO.update(menu);
}
public void update(Menu menu) {
System.out.println(menu.getIdSessao());
this.session.update(menu);
}
Pra que isso?Menu menu = new Menu();
menu = this.menuDAO.getMenuPeloNome(nomeAntigo); //aqui pego o valor atual da linha/objeto no BDPq não? Menu menu = menuDAO.getMenuPeloNome(nomeAntigo); //aqui pego o valor atual da linha/objeto no BD
[quote=jakefrog]1) Pra que isso?Menu menu = new Menu();
menu = this.menuDAO.getMenuPeloNome(nomeAntigo); //aqui pego o valor atual da linha/objeto no BDPq não? Menu menu = menuDAO.getMenuPeloNome(nomeAntigo); //aqui pego o valor atual da linha/objeto no BD
[/quote]
No trabalho, onde programo em C++, eh norma instaciar os objetos no inicio dos metodos (nao sei pq diabos), ai acabo ficando com a mania de fazer isso nos meus projetos pessoais (no trabalho fica mais bonitinho e organizado :p)
Sim, ele tah com o id correto, mas sei lah pq ele tah criando outra entrada, to debugando o codigo (que tem uns trechos feitos por um amigo) para ver c nao tem “coisa estranha” lah pra frente …
Bem, tome cuidado. 1) vc está alocando memória atoa. 2) isso pode ser ponto negativo em entrevistas 3) não é boa prática.
4) o hibernate/jpa trabalha com referências. Ele pode está se perdendo aí, ou então no método que retorna o objeto ou em algum outro lugar.
habilita o show_sql do hibernate no hibernate.cfg.xml e ver o sql que está sendo gerado, ou coloca um breakpoint e tenta ver o que está acontecendo. Apenas olhando o código acima n dar pra dizer extamente o motivo.