Dúvida Hibernate: identifier of an instance

7 respostas
R

Olá a todos do fórum.

Quando executo alguma ação crud na primeira vez funciona perfeitamente, mas apartir da segunda acontece a seguinte exceção.

br.com.rodrigo.stp.infra.exception.SystemException: net.sf.hibernate.HibernateException: identifier of an instance of br.com.rodrigo.stp.bean.PessoaBean altered from 33 to 0
	br.com.rodrigo.stp.infra.generics.AbstractGenericPersistenceHibernateDao.select(AbstractGenericPersistenceHibernateDao.java:182)
	br.com.rodrigo.stp.infra.generics.AbstractGenericBusiness.get(AbstractGenericBusiness.java:79)
	br.com.rodrigo.stp.presentation.struts.action.AbstractMainAction.doSearch(AbstractMainAction.java:206)
	br.com.rodrigo.stp.presentation.struts.action.MenuAction.execute(MenuAction.java:49)
	org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
	org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226)
	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
	org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:397)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

identifier of an instance of br.com.rodrigo.stp.bean.PessoaBean altered from 33 to 0

Alguém tem alguma dica pra me ajudar???

O esquisito que isso só acontece quando faço via Web(usando struts), chamando num main funciona normalmente. :cry:

Obrigado.

Sem mais, Rodrigo.

7 Respostas

U

parece que você esta reutilizando o VO para editar e para inserir, ou para inserir duas vezes ou algo assim :smiley:

se for isto, crie uma nova instancia do VO que deve funcionar :smiley:

R

Jóia valew, era isso mesmo. :smiley:

Eu já tava uma hora batendo a cabeça aqui pra descobrir. :oops:

Obrigado.

Sem mais, Rodrigo.

J

cara eu to com o mesmo problema, desculpa pela ignorancia mais o q seria VO???

W

Urubatan poderia detalhar um pouco mais a solução, pois estou com o mesmo problema e não consigo achar solução.

R

Bem tentando ajudar os amigos:

VO = Value Object , um tipo de pattern que contem apenas set e get, para melhor entendimento procure sobre patterns, também é o mesmo que TO(Transfer Object).

Quando a instancia acredito que ele teve ter criado uma nova instancia do objecto toda vez que for dar um insert ou select, correto?

at

W

Bem eu tava com esse problema, resolvi trocando o meu saveOrUpdate por merge. Li em alguns foruns e fui testando algumas possibilidades. Esta foi a que resolveu, mas não entendi o porque do problema e porque o merge resolveu, será que alguem poderia dar uma explicação o porque dessa execption.

net.sf.hibernate.HibernateException: identifier of an instance of br.com.rodrigo.stp.bean.PessoaBean altered from 33 to 0

D

Na real quando tu ta com o objeto conectado com o banco e altera o id do objeto para um id inválido acontece isso, não tem nada a ver com criar um DTO, VO, TO, isso tudo ajuda a não fazer erros, mas o erro é tentar colocar o id inválido no objeto.

Criado 11 de julho de 2005
Ultima resposta 30 de jun. de 2011
Respostas 7
Participantes 6