bom dia pessoal !
estou com um probleminha …
estou utilizando Hibernate eestou com problemas “pegar” uma referencia à classe que estou persistindo.
estou utilizando sequence para preencher meu id.
tenho uma classe que estou persistindo ela…
new MeuDAO().insert(MeuBO);
este comando funciona perfeitamente, se eu for no banco o dado aparece lá!
meu problema é que eu preencho minha classe da seguinte forma:
MeuBO meuBO = new MeuBO();
meuBO.setNome(nome);
meuBO.setPropriedadeA(propriedadeA);
meuBO.setPropriedadeB(propriedadeB);
meuBO.setPropriedadeC(propriedadeC);
//persistindo a classe
new MeuDAO().insert(MeuBO);
bom eis o problema … eu não setei meu id … que irá gerar é o hibernate … mas nenhum campo da tabela serve para identificar a tupla além do id.
não tenho uma referencia à minha tupla !
não posso grar um id utilizando alguma funçaõ tipo maior+1, pois existe muito acesso ao sistema… nesse microsegundo que eu estou somando e preparando para salvar, alguem pode ter salvado algo no banco … o que me causará uma inconsistencia !
alguem pode me ajudar ?
obrigado !
OLah,
cara, em que momento você quer o teu objeto?
no meu caso, quando vou edita-lo ou remove-lo, seleciono em uma lista, que ao ser montada ja esta guardado o seu id!
mas, digamos que você queira pegar o teu Objeto em outro momento!
crie/detecte algum atributo que sirva de chave, como por exemplo, Número de Matricula ou CPF e crie o metodo:
getObjetoByPropriedadeQueServeDeChave();
[]'s
[code]MeuBO meuBO = new MeuBO();
meuBO.setNome(nome);
meuBO.setPropriedadeA(propriedadeA);
meuBO.setPropriedadeB(propriedadeB);
meuBO.setPropriedadeC(propriedadeC);
//persistindo a classe
new MeuDAO().insert(meuBO);
int idGeradoPeloHibernate = meuBO.getId();[/code]
MeuBO meuBO = new MeuBO();
meuBO.setNome(nome);
meuBO.setPropriedadeA(propriedadeA);
meuBO.setPropriedadeB(propriedadeB);
meuBO.setPropriedadeC(propriedadeC);
//persistindo a classe
new MeuDAO().insert(meuBO);
int idGeradoPeloHibernate = meuBO.getId();
isso ira me returnar null, visto que eu não setei meu id hora nenhuma…
a continuação de meu codigo seria algo do genero
MeuOutroBO meuOutroBO =new MeuOutroBO ();
meuOutroBO.setMeuBO(MeuDAO.findById(??????????? onde eu pego esse id ?))
meuOutroBO.setPropriedadeA(propriedadeA)
meuOutroBO.setPropriedadeB(propriedadeB)
meuOutroBO.setPropriedadeC(propriedadeC)
MeuOutroDAO meuOutroDAO = new MeuOutroDAO()
meuOutroDAO.insert(meuOutroBO);
[quote]isso ira me returnar null, visto que eu não setei meu id hora nenhuma…
a continuação de meu codigo seria algo do genero[/quote]
Pois é, mas o Hibernate é muito gente boa e vai setar pra você!
o Hibernate eh gente fina mesmo, pode confiar, ele vai persistir e atualizar o seu objeto…
esse é meu problema então … ele não gostou de mim !
não esta atualizando meu objeto !
Você tentou ver o que está no id do seu objeto? Está 0? Se estiver, deve ter algum problema então, porque ele atualiza automaticamente.
De que tipo é esse id, Integer?
E qual o codigo você está usando pra salvar o objeto no banco?
Manda como está o mapeamento também.
consegui… o hibernate atualiza sim … eu estava esquecendo de atualizar meu TO após salvar o BO.
Obrigado pela atenção !