Voce implementou o equals e o hascode desta classe?
R
rodrigo_corinthians
Não tinha implementado mas já acabei de implementar e continua o mesmo erro(NonUniqueObjectException), tem mais alguma alternativa?
Obrigado.
Sem mais, Rodrigo.
C
cecaldas
Qdo vc vai remover ou alterar vc cria um pojo e popula ele ou pega um objeto q veio do banco mesmo. Já passei por esta exceção e acontecia qdo ia alterar ou remover um objeto q tava no banco, mas o meu problema era q eu criava um pojo para popular coms os dados q vinham do banco.
Se num for isso , posta o código relevante. (entre as tags code)
D
deniswsrosa
Cara essa excecao acontece qdo vc possui duas referencais a um mesmo objeto ( errrrrrrrrrr ), calma deixa eu explicar…
essa execao 'e muuuito util… pq evita redundancia, o q acontece 'e que no seu codigo vc possui um objeto q pode ser acessado via o relacionamento de outro, sem a necessidade de uma outra busca no banco, mas vc insiste em fazer outra busca, qdo o hibernate ve q vc poderia pegar o objeto pelo relacionamento e mesmo assim fez outra busca ele lanca essa porcaria ai…
se tiver mais duvidas estou a diposicao…
flw…
A
amhfilho
Também estou com este problema, mas é quando tento dar um saveOrUpdate. Já tentei fechar a session do Hibernate mas mesmo assim não está funcionando
L
lynddinha
usa merge pra resolver esse problema:
getHibernateTemplate().merge()
:roll:
M
marceloplis
deniswsrosa:
Cara essa excecao acontece qdo vc possui duas referencais a um mesmo objeto ( errrrrrrrrrr ), calma deixa eu explicar…
essa execao 'e muuuito util… pq evita redundancia, o q acontece 'e que no seu codigo vc possui um objeto q pode ser acessado via o relacionamento de outro, sem a necessidade de uma outra busca no banco, mas vc insiste em fazer outra busca, qdo o hibernate ve q vc poderia pegar o objeto pelo relacionamento e mesmo assim fez outra busca ele lanca essa porcaria ai…
se tiver mais duvidas estou a diposicao…
flw…
Está acontecendo comigo este erro, na seguinte situação:
Tenho uma Lista de Opções com checkbox e cada linha tem mais 3 checkbox:
[]Opcao A []I []U []D
[]Opcao B []I []U []D
Quando marco uma Opção faço um Insert e ao marcar I, U ou D faço um Update. mas para fazer um update, tenho que buscar o ID da opção marcada.
Resolvi isso localizando uma outra referência a minha entidade. Usei o session.evict(entidade) . Pois a entidade estava pendurada no cache com o mesmo valor.
vlw
P
Paulo_Silveira
ou voce pode usar o merge, que nao lanca essa exception, pois nao colocara o dado objeto no first level cache!
é bom usar o merge por ele ser especificado pela JPA, ja o update nao é. assim voce vai se acostumando.
J
joaoorso
[color=red]a different object with the same identifier value was already associated with the session:[/color]
Após tentar …
//Método velho que tava gerando Exceçãopublicvoidsave(Tobj)throwsFlorencaException{Sessionsession=HibernateUtil.getSession();Transactiontransaction=session.beginTransaction();try{transaction.begin();session.save(obj);transaction.commit();}catch(Exceptione){transaction.rollback();e.printStackTrace();thrownewFlorencaException(FlorencaException.getMensagem(e));}finally{session.close();}}// Método novo funcionando ... @Overridepublicvoidsave(CepCidadeVOobj)throwsFlorencaException{Sessionsession=HibernateUtil.getSession();Transactiontransaction=session.beginTransaction();try{System.out.println("CepCidadeDAO.save()");transaction.begin();session.merge(obj);transaction.commit();}catch(Exceptione){transaction.rollback();e.printStackTrace();thrownewFlorencaException(FlorencaException.getMensagem(e));}finally{session.close();}}
Obrigado ! :roll:
S
scheide
Estou com este erro também, mas na inclusão, ou save().
Tenho uma tabela A e para cada item desta tabela, gravo 100 itens na tabela B, então o que eu quero fazer é mais ou menos isso:
Pelo jeito não é possível fazer deste modo. Alguém teria alguma sugestão para que o commit() só se dê após a gravação de todos os objetos na tabelaB?
[]'s
B
bramorim
Galera,
estava com esse mesmo problema utilizando o JBoss Seam.
Anotei a PK com @GeneratedValue(strategy = GenerationType.IDENTITY) nos meus beans e o tipo das variáveis (de primitivo para objeto) e tudo se resolveu.
espero ter ajudado
J
jo-souza
bramorim, estava com esse problema também usando o JBOSS e sua dica resolveu
obrigada
P
Porcojava
poww…estou com o mesmo problema só que no meu caso é em um “delete”, então a solução do merge não serviria…
br.com.is.commons.db.dao.InfrastructureException: org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session: [br.com.is.isenterprise.lab.model.RetornoExameTemp#Empresa=1, Paciente=1072, No. Sequência=2No. Sequência Exame=2Id. Retorno=258]
at br.com.is.commons.db.dao.DAOImplHb.delete(Unknown Source)
J
Juarez_Guimar_s
Bem Estou com o mesmo problema…
Esse é o codigo que estou tendo esse dor de cabeça…
Usei o merge mais não funcionou… se alguem puder me ajudar Fico grato!
L
Leandro_R_Combinato
[b]
Eu tb estava com o mesmo problema para fazer a persistencia eu usei MERGE , ok.
Mais problema era ao fazer o DELETE dava esse erro abaixo:
delete a different object with the same identifier value was already associated with the session:
PROBLEMA RESOLVIDO
[/b]
publicListpesquisarPagamentoHb(PlanoPagamentoplanoPagamento)throwsDAOException{
Queryquery=null;Sessionsessions=null;ListpagamentoList=newArrayList<PlanoPagamento>();if(planoPagamento.getPesquisar()!=""){
sessions=HbLocator.currentSession();try{
query=sessions.createQuery(" FROM PlanoPagamento "+" WHERE "+planoPagamento.getFiltro()+" like ? ").setString(0,planoPagamento.getPesquisar()+"%");pagamentoList=query.list(); }catch(Exceptione){
e.printStackTrace();thrownewDAOException("[PagamentoDAOImpl - pesquisarPagamentoHb] "+e.getMessage(),e);}
}
HbLocator.closeSession(); returnpagamentoList;}
F
fabio_lpontes
deniswsrosa:
Cara essa excecao acontece qdo vc possui duas referencais a um mesmo objeto ( errrrrrrrrrr ), calma deixa eu explicar…
essa execao 'e muuuito util… pq evita redundancia, o q acontece 'e que no seu codigo vc possui um objeto q pode ser acessado via o relacionamento de outro, sem a necessidade de uma outra busca no banco, mas vc insiste em fazer outra busca, qdo o hibernate ve q vc poderia pegar o objeto pelo relacionamento e mesmo assim fez outra busca ele lanca essa porcaria ai…
se tiver mais duvidas estou a diposicao…
flw…
Eu estou com o mesmo problema .
Como que agente corrige esse problema ?
D
daniloben
lynddinha:
usa merge pra resolver esse problema:
getHibernateTemplate().merge()
lynddinha muito obrigado o merge realmente resolveu meu problema de NonUniqueObjectException :lol: