Salvar Null em Relacionamento

9 respostas
Diego.G.A

Bem estou com o seguinte problema, eu tenho no meu banco de dados um relacionamento não identificado, que pode aceitar tanto um valor null como um id da chave estrangeira.
Eu salvei uma informação utilizando o id da chave estrangeira mas agora estou querendo atualizar o campo e salvar null o problema é que o hibernate gera uma exception quando eu tento fazer update ou merge.

segue o código do relacionamento.

@ManyToOne(optional = true,fetch=FetchType.EAGER)
@JoinColumn(name = "idRegimeBens", nullable = true)
private RegimeBens idRegimeBens = new RegimeBens();

antes de eu executar o update eu seto null para esta variavel. Mesmo fazendo isso o hibernate gera esta exception:

9 Respostas

valtoni

Fala companheiro de batalha!

Seguinte: já passei pelo mesmíssimo problema.
Verifique no seu código se em algum ponto obscuro você inadivertidamente não tá tentando fazer um merge em “idRegimeBens” com o valor null. Aí ele realmente vai retornar um erro.

Caso não seja isso, poste exatamente os trechos de código onde você faz o merge, tanto da propriedade em si como da classe que a contém.

Diego.G.A

ai que ta, eu quero que ele faça o merge com o valor null

porque quero persisti no banco o valor null para o relacionamento.

valtoni

Sim, porém veja se vc tá chamando em algum trecho o seu código assim:

Eu já fiz isso para ter certeza que o objeto era o mesmo do banco, mas, como no seu caso, tive um problema quando executava esse método da maneira acima. Por isso digo: posta todos os “merge” que você tiver no seu código, pra gente olhar! 8)

Diego.G.A
public void salvarFisica(ActionEvent evt) {
		try {

			if(!estadoCivilDao.verificaExigirRegimeBens(fisica.getId())) {
				fisica.setIdRegimeBens(null);
			}
			
			if (fisica.getId().intValue() == 0) {
				SituacaoLegal situacao = situacaoLegalDao.findById(2L);
				Estado e = new Estado();
				Municipio oMunicipio = municipioDao.findById(fisica
						.getIdMunicipioNaturalidade().getId());
				idEstadoProcedencia = oMunicipio.getIdEstado().getId();
				e.setId(idEstadoProcedencia);
				fisica.setIdEstadoProcedencia(e);
				fisica.setIdSituacaoLegal(situacao);
				fisica.setId(pessoa.getId());
				fisicaDao.save(fisica);
			} else {
				fisicaDao.merge(fisica);
			}
			
			if(fisica.getIdRegimeBens() == null) {
				fisica.setIdRegimeBens(new RegimeBens());
			}

			desabilitaAba = false;
			addInfoMessageFromResource("salvo_sucesso");
		} catch (DaoException e1) {
			e1.printStackTrace();
			logger.error(e1.getMessage(), e1);
			addErrorMessageFromResource("erro_salvar");
		}
	}

esse é o código que esta sendo executado

valtoni

Beleza, agora posta o conteúdo de “fisicaDao.merge()

Diego.G.A

public void merge(T bean) throws DaoException { try { session.merge(bean); } catch(HibernateException he) { throw new DaoException(he); } }

Diego.G.A

esse é o stacktrace do erro

<blockquote>10/06/10 10:48 ERROR [AbstractFlushingEventListener] - Could not synchronize database state with session

org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: br.com.pdcase.apoio.regimebens.entity.RegimeBens

at org.hibernate.engine.ForeignKeys.getEntityIdentifierIfNotUnsaved(ForeignKeys.java:219)

at org.hibernate.type.EntityType.getIdentifier(EntityType.java:397)

at org.hibernate.type.ManyToOneType.nullSafeSet(ManyToOneType.java:78)

at org.hibernate.persister.entity.AbstractEntityPersister.dehydrate(AbstractEntityPersister.java:2002)

at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2376)

at org.hibernate.persister.entity.AbstractEntityPersister.updateOrInsert(AbstractEntityPersister.java:2312)

at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2612)

at org.hibernate.action.EntityUpdateAction.execute(EntityUpdateAction.java:96)

at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:279)

at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:263)

at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:168)

at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)

at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)

at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)

at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)

at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)

at org.jboss.seam.transaction.HibernateTransaction.commit(HibernateTransaction.java:108)

at org.jboss.seam.jsf.SeamPhaseListener.commitOrRollback(SeamPhaseListener.java:613)

at org.jboss.seam.jsf.SeamPhaseListener.commitOrRollback(SeamPhaseListener.java:604)

at org.jboss.seam.jsf.SeamPhaseListener.handleTransactionsAfterPhase(SeamPhaseListener.java:345)

at org.jboss.seam.jsf.SeamPhaseListener.afterServletPhase(SeamPhaseListener.java:245)

at org.jboss.seam.jsf.SeamPhaseListener.afterPhase(SeamPhaseListener.java:196)

at com.sun.faces.lifecycle.Phase.handleAfterPhase(Phase.java:175)

at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:114)

at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)

at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)

at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)

at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1093)

at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)

at org.jboss.seam.web.IdentityFilter.doFilter(IdentityFilter.java:40)

at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)

at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:90)

at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)

at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)

at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)

at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)

at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)

at org.jboss.seam.web.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:42)

at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)

at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)

at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)

at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:368)

at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:495)

at org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:56)

at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)

at org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:60)

at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)

at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)

at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)

at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)

at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)

at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)

at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:726)

at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)

at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:206)

at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)

at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)

at org.mortbay.jetty.Server.handle(Server.java:324)

at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)

at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:842)

at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:648)

at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)

at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)

at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)

at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:450)

10/06/10 10:48 WARN  [SeamPhaseListener] - uncaught exception, passing to exception handler

java.lang.IllegalStateException: Could not commit transaction

at org.jboss.seam.jsf.SeamPhaseListener.commitOrRollback(SeamPhaseListener.java:625)

at org.jboss.seam.jsf.SeamPhaseListener.commitOrRollback(SeamPhaseListener.java:604)

at org.jboss.seam.jsf.SeamPhaseListener.handleTransactionsAfterPhase(SeamPhaseListener.java:345)

at org.jboss.seam.jsf.SeamPhaseListener.afterServletPhase(SeamPhaseListener.java:245)

at org.jboss.seam.jsf.SeamPhaseListener.afterPhase(SeamPhaseListener.java:196)

at com.sun.faces.lifecycle.Phase.handleAfterPhase(Phase.java:175)

at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:114)

at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)

at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)

at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)

at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1093)

at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)

at org.jboss.seam.web.IdentityFilter.doFilter(IdentityFilter.java:40)

at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)

at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:90)

at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)

at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)

at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)

at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)

at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)

at org.jboss.seam.web.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:42)

at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)

at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)

at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)

at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:368)

at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:495)

at org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:56)

at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)

at org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:60)

at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)

at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)

at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)

at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)

at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)

at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)

at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:726)

at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)

at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:206)

at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)

at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)

at org.mortbay.jetty.Server.handle(Server.java:324)

at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)

at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:842)

at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:648)

at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)

at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)

at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)

at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:450)

Caused by: org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: br.com.pdcase.apoio.regimebens.entity.RegimeBens

at org.hibernate.engine.ForeignKeys.getEntityIdentifierIfNotUnsaved(ForeignKeys.java:219)

at org.hibernate.type.EntityType.getIdentifier(EntityType.java:397)

at org.hibernate.type.ManyToOneType.nullSafeSet(ManyToOneType.java:78)

at org.hibernate.persister.entity.AbstractEntityPersister.dehydrate(AbstractEntityPersister.java:2002)

at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2376)

at org.hibernate.persister.entity.AbstractEntityPersister.updateOrInsert(AbstractEntityPersister.java:2312)

at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2612)

at org.hibernate.action.EntityUpdateAction.execute(EntityUpdateAction.java:96)

at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:279)

at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:263)

at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:168)

at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)

at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)

at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)

at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)

at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)

at org.jboss.seam.transaction.HibernateTransaction.commit(HibernateTransaction.java:108)

at org.jboss.seam.jsf.SeamPhaseListener.commitOrRollback(SeamPhaseListener.java:613)

 47 more

10/06/10 10:48 ERROR [SeamPhaseListener] - swallowing exception

java.lang.IllegalStateException: Could not commit transaction

at org.jboss.seam.jsf.SeamPhaseListener.commitOrRollback(SeamPhaseListener.java:625)

at org.jboss.seam.jsf.SeamPhaseListener.commitOrRollback(SeamPhaseListener.java:604)

at org.jboss.seam.jsf.SeamPhaseListener.handleTransactionsAfterPhase(SeamPhaseListener.java:345)

at org.jboss.seam.jsf.SeamPhaseListener.afterServletPhase(SeamPhaseListener.java:245)

at org.jboss.seam.jsf.SeamPhaseListener.afterPhase(SeamPhaseListener.java:196)

at com.sun.faces.lifecycle.Phase.handleAfterPhase(Phase.java:175)

at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:114)

at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)

at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)

at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)

at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1093)

at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)

at org.jboss.seam.web.IdentityFilter.doFilter(IdentityFilter.java:40)

at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)

at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:90)

at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)

at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)

at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)

at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)

at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)

at org.jboss.seam.web.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:42)

at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)

at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)

at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)

at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:368)

at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:495)

at org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:56)

at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)

at org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:60)

at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)

at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)

at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)

at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)

at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)

at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)

at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:726)

at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)

at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:206)

at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)

at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)

at org.mortbay.jetty.Server.handle(Server.java:324)

at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)

at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:842)

at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:648)

at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)

at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)

at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)

at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:450)

Caused by: org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: br.com.pdcase.apoio.regimebens.entity.RegimeBens

at org.hibernate.engine.ForeignKeys.getEntityIdentifierIfNotUnsaved(ForeignKeys.java:219)

at org.hibernate.type.EntityType.getIdentifier(EntityType.java:397)

at org.hibernate.type.ManyToOneType.nullSafeSet(ManyToOneType.java:78)

at org.hibernate.persister.entity.AbstractEntityPersister.dehydrate(AbstractEntityPersister.java:2002)

at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2376)

at org.hibernate.persister.entity.AbstractEntityPersister.updateOrInsert(AbstractEntityPersister.java:2312)

at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2612)

at org.hibernate.action.EntityUpdateAction.execute(EntityUpdateAction.java:96)

at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:279)

at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:263)

at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:168)

at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)

at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)

at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)

at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)

at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)

at org.jboss.seam.transaction.HibernateTransaction.commit(HibernateTransaction.java:108)

at org.jboss.seam.jsf.SeamPhaseListener.commitOrRollback(SeamPhaseListener.java:613)

 47 more

</blockquote>
Diego.G.A

Bem eu fiz uns testes aqui e acabei descobrindo o porque do erro.

antes de ele enviar este objeto para o formulario ele carregava do banco e o classloader do hibernate modificava objeto com as tecnicas de lazy
e quando eu ia persisti o objeto o mesmo tentava fazer o lazy no meu objeto e não encontrava nenhuma referencia do mesmo no banco por estar null.

a minha solução foi criar um novo objeto da classe e passar os mesmos valores do objeto carregado pelo hibernate para poder persistir no banco.
código abaixo para criar o clone da classe

Fisica f = new Fisica();

				f.setId(fisica.getId());
				f.setIdEstadoEmissor(fisica.getIdEstadoEmissor());
				f.setIdEstadoProcedencia(fisica.getIdEstadoEmissor());
				f.setIdEstadoCivil(fisica.getIdEstadoCivil());
				f.setIdGrauInstrucao(fisica.getIdGrauInstrucao());
				f.setIdProfissao(fisica.getIdProfissao());
				f.setIdMunicipioNaturalidade(fisica.getIdMunicipioNaturalidade());
				f.setIdRegimeBens(fisica.getIdRegimeBens());
				f.setIdSituacaoLegal(fisica.getIdSituacaoLegal());
				f.setIdTipoDocumento(fisica.getIdTipoDocumento());
				f.setApelido(fisica.getApelido());
				f.setNomeMae(fisica.getNomeMae());
				f.setNomePai(fisica.getNomePai());
				f.setDataNascimento(fisica.getDataNascimento());
				f.setSiglaSexo(fisica.getSiglaSexo());
				f.setRegistroGeral(fisica.getRegistroGeral());
				f.setDataRegistroGeral(fisica.getDataRegistroGeral());
				f.setOrgaoEmissor(fisica.getOrgaoEmissor());
				f.setSituacaoContaSimplificada(fisica.getSituacaoContaSimplificada());
				f.setDataProcedencia(fisica.getDataProcedencia());
				f.setNomeLocalProcedencia(fisica.getNomeLocalProcedencia());
				f.setDataNaturalizacao(fisica.getDataNaturalizacao());
				f.setSituacaoEmpregado(fisica.getSituacaoEmpregado());
				f.setStatus(fisica.getStatus());
				f.setDataAtualizacao(fisica.getDataAtualizacao());
				f.setIdUsuario(fisica.getIdUsuario());
				f.setIdEstacao(fisica.getIdEstacao());
				f.setNomeProcedure(fisica.getNomeProcedure());
				
				fisicaDao.merge(f);
valtoni

Diego,

Não tem como ele fazer um load de um null e depois dar um erro de “Transient Value” depois disso. O problema são sessões diferentes. Em algum ponto do seu código você deve testar o valor do objeto para depois fazer um merge. Sacou? Cuidado ao fazer um clone pra resolver isso, pois você pode estar varrendo a poeira pra debaixo do tapete (não digo que está, mas pode estar).

Criado 10 de junho de 2010
Ultima resposta 10 de jun. de 2010
Respostas 9
Participantes 2