StaleStateException

15 respostas
evertonsilvagomesjav

Pessoal na hora de persistir meu objeto no banco esta gerando essa exception OptimisticLockException, o que e isso como resolver?

15 Respostas

A

cara,

posta o log do erro completo ai.

t+

evertonsilvagomesjav

Esta ai Alisson:

2011-10-29 09:54:25,609 ERROR [org.hibernate.event.def.AbstractFlushingEventListener] Could not synchronize database state with session org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1 at org.hibernate.jdbc.Expectations$BasicExpectation.checkBatched(Expectations.java:61) at org.hibernate.jdbc.Expectations$BasicExpectation.verifyOutcome(Expectations.java:46) at org.hibernate.jdbc.NonBatchingBatcher.addToBatch(NonBatchingBatcher.java:24) at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2403) at org.hibernate.persister.entity.AbstractEntityPersister.updateOrInsert(AbstractEntityPersister.java:2307) at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2607) at org.hibernate.action.EntityUpdateAction.execute(EntityUpdateAction.java:92) at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:250) at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:234) at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:142) 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.ejb.AbstractEntityManagerImpl.flush(AbstractEntityManagerImpl.java:296) at org.jboss.ejb3.entity.TransactionScopedEntityManager.flush(TransactionScopedEntityManager.java:211) at br.gov.cvm.rfe.dominio.daos.GenericDaoBean.atualiza(GenericDaoBean.java:52) at br.gov.cvm.rfe.dominio.daos.GenericDaoBean.atualiza(GenericDaoBean.java:38) at br.gov.cvm.rfe.servicos.ParticipanteMercadoServiceBean.salvaParticipanteMercado(ParticipanteMercadoServiceBean.java:29) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:112) at org.jboss.ejb3.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:166) at org.jboss.ejb3.interceptor.EJB3InterceptorsInterceptor.invoke(EJB3InterceptorsInterceptor.java:63) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor.invoke(TransactionScopedEntityManagerInterceptor.java:54) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsInterceptor.java:47) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:79) at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:191) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:95) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:62) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss.aspects.security.AuthenticationInterceptor.invoke(AuthenticationInterceptor.java:77) at org.jboss.ejb3.security.Ejb3AuthenticationInterceptor.invoke(Ejb3AuthenticationInterceptor.java:110) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:46) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:106) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss.ejb3.stateless.StatelessContainer.localInvoke(StatelessContainer.java:240) at org.jboss.ejb3.stateless.StatelessContainer.localInvoke(StatelessContainer.java:210) at org.jboss.ejb3.stateless.StatelessLocalProxy.invoke(StatelessLocalProxy.java:84) at $Proxy125.salvaParticipanteMercado(Unknown Source) at br.gov.cvm.rfe.web.backingBeans.CarteiraBB.insere(CarteiraBB.java:337) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.el.parser.AstValue.invoke(AstValue.java:131) at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276) at com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:68) at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:77) at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:91) at javax.faces.component.UICommand.broadcast(UICommand.java:383) at org.ajax4jsf.component.AjaxActionComponent.broadcast(AjaxActionComponent.java:55) at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:321) at org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:296) at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:253) at org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:466) at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97) at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251) at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:244) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 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.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:147) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179) at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446) at java.lang.Thread.run(Thread.java:619)

A

ve te ajuda,

http://www.coderanch.com/t/217234/ORM/java/StaleStateException

t+

evertonsilvagomesjav

Alisson, eu estou usando EJB então nem controlo as transações, so chamo o metodo persist, não estou entendendo pq estava funcionando antes =/

A

cara,

entao posta seu codigo ai, deixa eu dar uma olhada.

t+

evertonsilvagomesjav

O metodo q faz o insert é esse:

public void insere(){		
		if(consisteDadosCarteira()){			
			getCarteira().setIndicePercentualMinimoSubordinacaoCarteira(Float.parseFloat(indiceMinimoDeSubordinacao));
			montaPkCarteira();
			if(getParticipante().getListCarteira() == null){
				getParticipante().setListCarteira(new ArrayList<Carteira>());
			}
			getParticipante().getListCarteira().add(getCarteira());
			anexarDocCarteira();
			try{
				particMercadoService.salvaParticipanteMercado(particMercado, participante);
				addFacesMessage(FacesMessage.SEVERITY_ERROR, "Fundo Fidc incluído com sucesso");
			}catch(Exception e){
				
			}
		}	
	}

Agora, qual o motivo desse erro? Isso q nao to conseguindo entender =/

A

posta as classes completa, e posta a sequencia q vc segue das classes.

t+

evertonsilvagomesjav

Allison o erro ocorre quando meu objeto participante tem mais de um objeto ParticipanteAssociado na sua lista de ParticipanteAssociado

A classe participante:
package br.gov.cvm.rfe.dominio.corporativo.entidades;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.JoinColumns;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;


/**
 * @author everton.gomes *
 */
@Entity
@Table(name="SIC_PARTIC")
@NamedQueries({@NamedQuery(name="findPartic",query="select distinct p from Participante p left join fetch p.pessoaFisicaJuridica where p.motivoCanc.cdMotivoCanc = 62"),
			   @NamedQuery(name="findParticipante",query="select distinct p from Participante p left join fetch p.pessoaFisicaJuridica where p.pk.nrPfPj = ?1")})
public class Participante implements Serializable {

	private static final long serialVersionUID = 1L;
	
	public static final String QUERY_CONSULTAR_PARTICIPANTE = "findPartic";
	
	public static final String QUERY_CONSULTAR_PARTICIPANTE_POR_NRPFPJ = "findParticipante";
	
	private ParticipantePk pk;
	
	private String statusGestorFdoExcv; 
		  
	private PessoaFisicaJuridica pessoaFisicaJuridica;	
	
	private List<ParticipanteAssociado> listaPartic;

	private List<AssociacaoParticipante> listaAssocPartic;
	
	private List<ParticipanteAssociado> listaParticAssoc;
	
	private MotivoCancelamento motivoCanc;
	
	private Date dtCancelamento;
	
	private List<SituacaoParticipante> listaSituacoes;
		
	private Date dtConst;
	
	private Integer cdTpAdmin;		
	
	private List<ParticTipoFormaCondominio> listParticTpFormCondom;
	
	private List<AbertoFechado> listAbertoFechado;
	
	private List<InformacoesRegistroFundoFidc> listInformacoesRegistroFundoFidc;

	private List<InformacoesInstituicaoCustodianteFundoFidc> listInformacoesInstituicaoCustodiante;
	
	private List<ClassificacaoRisco> listClassificacaoRisco;
	
	private List<MaterialDivulgacao> listMaterialDivulgacao;
	
	private List<ParticipanteClasseSerie> listParticipanteClasseSerie;
	
	private List<Carteira> listCarteira;	
	
	private List<InformacoesComplementares> listInformacoesComplementares;
	
	private List<InformacoesPrestadoresDeServico> listInformacoesPrestadores;

	private List<ExercicioSocial> listaExercicioSocial;
		
	public void setPessoaFisicaJuridica(PessoaFisicaJuridica pessoaFisicaJuridica) {
		this.pessoaFisicaJuridica = pessoaFisicaJuridica;
	}

	@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
	@JoinColumns({
	  @JoinColumn(name="CD_TP_PF_PJ",referencedColumnName="CD_TP_PF_PJ",insertable=false, updatable = false),
	  @JoinColumn(name="NR_PF_PJ",referencedColumnName="NR_PF_PJ",insertable=false, updatable = false)
	})
	public PessoaFisicaJuridica getPessoaFisicaJuridica() {
		
		if(pessoaFisicaJuridica == null)
			pessoaFisicaJuridica = new PessoaFisicaJuridica();
		
		return pessoaFisicaJuridica;
	}
	
	public void setStatusGestorFdoExcv(String statusGestorFdoExcv) {
		this.statusGestorFdoExcv = statusGestorFdoExcv;
	}

	@Column(name="ST_GEST_FDO_EXCV")
	public String getStatusGestorFdoExcv() {
		return statusGestorFdoExcv;
	}

	public void setPk(ParticipantePk pk) {
		this.pk = pk;
	}

	@EmbeddedId
	public ParticipantePk getPk() {		
		if(pk == null)
			pk = new ParticipantePk();			
		return pk;
	}

	public void setMotivoCanc(MotivoCancelamento motivoCanc) {
		this.motivoCanc = motivoCanc;
	}

	@ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
	@JoinColumn(referencedColumnName="CD_MOTIVO_CANC", name="CD_MOTIVO_CANC")
	public MotivoCancelamento getMotivoCanc() {
		return motivoCanc;
	}
	

	public void setDtCancelamento(Date dtCancelamento) {
		this.dtCancelamento = dtCancelamento;
	}

	@Temporal(TemporalType.TIMESTAMP)   
	@Column(name="DT_CANC", columnDefinition="smalldatetime")
	public Date getDtCancelamento() {
		return dtCancelamento;
	}

	public void setListaSituacoes(List<SituacaoParticipante> listaSituacoes) {
		this.listaSituacoes = listaSituacoes;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "participante")
	public List<SituacaoParticipante> getListaSituacoes() {
		return listaSituacoes;
	}

	public void setListaPartic(List<ParticipanteAssociado> listaPartic) {
		this.listaPartic = listaPartic;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "participante")
	public List<ParticipanteAssociado> getListaPartic() {
		return listaPartic;
	}

	public void setListaParticAssoc(List<ParticipanteAssociado> listaParticAssoc) {
		this.listaParticAssoc = listaParticAssoc;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "participanteAssoc")
	public List<ParticipanteAssociado> getListaParticAssoc() {
		if(listaParticAssoc == null)
			listaParticAssoc = new ArrayList<ParticipanteAssociado>();
		return listaParticAssoc;
	}

	public void setCdTpAdmin(Integer cdTpAdmin) {
		this.cdTpAdmin = cdTpAdmin;
	}

	@Column(name="CD_TP_ADM")
	public Integer getCdTpAdmin() {
		return cdTpAdmin;
	}	

	public void setListaAssocPartic(List<AssociacaoParticipante> listaAssocPartic) {
		this.listaAssocPartic = listaAssocPartic;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "participante")
	public List<AssociacaoParticipante> getListaAssocPartic() {
		if(listaAssocPartic == null)
			listaAssocPartic = new ArrayList<AssociacaoParticipante>();
		return listaAssocPartic;
	}

	public void setDtConst(Date dtConst) {
		this.dtConst = dtConst;
	}

	@Temporal(TemporalType.TIMESTAMP) 
	@Column(name="DT_CONST")
	public Date getDtConst() {
		return dtConst;
	}

	public void setListParticTpFormCondom(List<ParticTipoFormaCondominio> listParticTpFormCondom) {
		this.listParticTpFormCondom = listParticTpFormCondom;
	}

	@OneToMany(cascade = CascadeType.ALL, mappedBy = "participante", fetch = FetchType.LAZY)
	public List<ParticTipoFormaCondominio> getListParticTpFormCondom() {
		return listParticTpFormCondom;
	}	

	public void setListParticipanteClasseSerie(
			List<ParticipanteClasseSerie> listParticipanteClasseSerie) {
		this.listParticipanteClasseSerie = listParticipanteClasseSerie;
	}

	@OneToMany(cascade = CascadeType.ALL, mappedBy = "participante", fetch = FetchType.LAZY)
	public List<ParticipanteClasseSerie> getListParticipanteClasseSerie() {
		return listParticipanteClasseSerie;
	}

	public void setListInformacoesInstituicaoCustodiante(
			List<InformacoesInstituicaoCustodianteFundoFidc> listInformacoesInstituicaoCustodiante) {
		this.listInformacoesInstituicaoCustodiante = listInformacoesInstituicaoCustodiante;
	}
	
	@OneToMany(cascade=CascadeType.ALL, mappedBy="participante")
	public List<InformacoesInstituicaoCustodianteFundoFidc> getListInformacoesInstituicaoCustodiante() {
		if(listInformacoesInstituicaoCustodiante == null)
			listInformacoesInstituicaoCustodiante = new ArrayList<InformacoesInstituicaoCustodianteFundoFidc>();
		return listInformacoesInstituicaoCustodiante;
	}

	public void setListInformacoesRegistroFundoFidc(
			List<InformacoesRegistroFundoFidc> listInformacoesRegistroFundoFidc) {
		this.listInformacoesRegistroFundoFidc = listInformacoesRegistroFundoFidc;
	}

	@OneToMany(cascade=CascadeType.ALL, mappedBy="participante")
	public List<InformacoesRegistroFundoFidc> getListInformacoesRegistroFundoFidc() {
		if(listInformacoesRegistroFundoFidc == null)
			listInformacoesRegistroFundoFidc = new ArrayList<InformacoesRegistroFundoFidc>();
		return listInformacoesRegistroFundoFidc;
	}

	public void setListClassificacaoRisco(List<ClassificacaoRisco> listClassificacaoRisco) {
		this.listClassificacaoRisco = listClassificacaoRisco;
	}

	@OneToMany(cascade=CascadeType.ALL, mappedBy="participante")
	public List<ClassificacaoRisco> getListClassificacaoRisco() {		
		return listClassificacaoRisco;
	}

	public void setListMaterialDivulgacao(List<MaterialDivulgacao> listMaterialDivulgacao) {
		this.listMaterialDivulgacao = listMaterialDivulgacao;
	}

	@OneToMany(cascade=CascadeType.ALL, mappedBy="participante")
	public List<MaterialDivulgacao> getListMaterialDivulgacao() {
		return listMaterialDivulgacao;
	}

	public void setListCarteira(List<Carteira> listCarteira) {
		this.listCarteira = listCarteira;
	}
	
	@OneToMany(cascade=CascadeType.ALL, mappedBy="participante")
	public List<Carteira> getListCarteira() {
		return listCarteira;
	}

	public void setListAbertoFechado(List<AbertoFechado> listAbertoFechado) {
		this.listAbertoFechado = listAbertoFechado;
	}

	@OneToMany(cascade=CascadeType.ALL, mappedBy="participante")
	public List<AbertoFechado> getListAbertoFechado() {
		return listAbertoFechado;
	}

	public void setListInformacoesComplementares(
			List<InformacoesComplementares> listInformacoesComplementares) {
		this.listInformacoesComplementares = listInformacoesComplementares;
	}

	@OneToMany(cascade=CascadeType.ALL, mappedBy="participante")
	public List<InformacoesComplementares> getListInformacoesComplementares() {
		return listInformacoesComplementares;
	}

	public void setListInformacoesPrestadores(
			List<InformacoesPrestadoresDeServico> listInformacoesPrestadores) {
		this.listInformacoesPrestadores = listInformacoesPrestadores;
	}

	@OneToMany(cascade=CascadeType.ALL, mappedBy="participante")
	public List<InformacoesPrestadoresDeServico> getListInformacoesPrestadores() {
		return listInformacoesPrestadores;
	}

	public void setListaExercicioSocial(List<ExercicioSocial> listaExercicioSocial) {
		this.listaExercicioSocial = listaExercicioSocial;
	}
	
	@OneToMany(cascade=CascadeType.ALL, mappedBy="participante")
	public List<ExercicioSocial> getListaExercicioSocial() {
		return listaExercicioSocial;
	}
}
A classe ParticipanteAssociado
/**
 * 
 */
package br.gov.cvm.rfe.dominio.corporativo.entidades;

import java.io.Serializable;

import javax.persistence.CascadeType;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.JoinColumns;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

/**
 * @author everton.gomes
 */
@Entity
@Table(name="SIC_PARTIC_ASSOC")
public class ParticipanteAssociado implements Serializable {

	private static final long serialVersionUID = 1L;
	
	private ParticipanteAssociadoPk pk;
	
	private Participante participante;
	
	private Participante participanteAssoc;

	public void setPk(ParticipanteAssociadoPk pk) {
		this.pk = pk;
	}

	@EmbeddedId
	public ParticipanteAssociadoPk getPk() {
		
		if(pk == null)
			pk = new ParticipanteAssociadoPk();
			
		return pk;
	}

	public void setParticipante(Participante participante) {
		this.participante = participante;
	}

	@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
	@JoinColumns({
	@JoinColumn(name="CD_TP_PF_PJ",referencedColumnName="CD_TP_PF_PJ",insertable=false,updatable=false),
	@JoinColumn(name="NR_PF_PJ",referencedColumnName="NR_PF_PJ",insertable=false,updatable=false),
	@JoinColumn(name="CD_TP_PARTIC",referencedColumnName="CD_TP_PARTIC",insertable=false,updatable=false),
	@JoinColumn(name="DT_REG_PARTIC",referencedColumnName="DT_REG_PARTIC",insertable=false,updatable=false)
	})
	public Participante getParticipante() {
		return participante;
	}

	public void setParticipanteAssoc(Participante participanteAssoc) {
		this.participanteAssoc = participanteAssoc;
	}

	@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
	@JoinColumns({
	@JoinColumn(name="CD_TP_PF_PJ",referencedColumnName="CD_TP_PF_PJ",insertable=false,updatable=false),
	@JoinColumn(name="NR_PF_PJ",referencedColumnName="NR_PF_PJ",insertable=false,updatable=false),
	@JoinColumn(name="CD_TP_PARTIC",referencedColumnName="CD_TP_PARTIC",insertable=false,updatable=false),
	@JoinColumn(name="DT_REG_PARTIC",referencedColumnName="DT_REG_PARTIC",insertable=false,updatable=false)
	})
	public Participante getParticipanteAssoc() {
		return participanteAssoc;
	}

}

Na hora de salvar o método:

public <T> T atualiza(T entity, boolean executarFlush) {
		//try {
			getEntityManager().merge(entity);
			
//executarFlush e sempre true.
			if(executarFlush){
				getEntityManager().flush();
			}
			
		//} catch (EntityExistsException ex) {
		//	throw new EntidadeJaExisteException(ex);
		//} catch (RuntimeException re) {
		//	throw new GenericDaoException(re);
		//}
		return entity;
	}
A

cara,

ve nesse link o post que eu fiz, sua situação é a msm.

como vc ta pegando o seu entityManager?

t+

evertonsilvagomesjav

Alisson bom dia :smiley:

Eu li o codigo que vc postou, mas o que devo fazer na minha aplicação? Criar um objeto em alguma pk? Não entendi bem =/

A

bom dia,

entao cara, vc vai fazer o seguinte, na sua classe ParticipanteAssociado, vc vai remover o atributo participante e passar para a classe ParticipanteAssociadoPK, tirando a referencia do atributo participante que vai possuir nessa classe.

e na classe participante vc vai ter isso aqui

@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "pk.participante")  
    public List<ParticipanteAssociado> getListaPartic() {  
        return listaPartic;  
    }

isso aqui ta certo cara, duas associações para a mesma tabela.

public void setListaPartic(List<ParticipanteAssociado> listaPartic) {  
        this.listaPartic = listaPartic;  
    }  
  
    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "participante")  
    public List<ParticipanteAssociado> getListaPartic() {  
        return listaPartic;  
    }  
  
    public void setListaParticAssoc(List<ParticipanteAssociado> listaParticAssoc) {  
        this.listaParticAssoc = listaParticAssoc;  
    }  
  
    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "participanteAssoc")  
    public List<ParticipanteAssociado> getListaParticAssoc() {  
        if(listaParticAssoc == null)  
            listaParticAssoc = new ArrayList<ParticipanteAssociado>();  
        return listaParticAssoc;  
    }

t+

evertonsilvagomesjav

Alisson fiz algumas modificaçoes de acordo com seu post mas continuo o mesmo erro veja o que fiz

Classe Participante
@Entity
@Table(name="SIC_PARTIC")
@NamedQueries({@NamedQuery(name="findPartic",query="select distinct p from Participante p left join fetch p.pessoaFisicaJuridica where p.motivoCanc.cdMotivoCanc = 62"),
			   @NamedQuery(name="findParticipante",query="select distinct p from Participante p left join fetch p.pessoaFisicaJuridica where p.pk.nrPfPj = ?1")})
public class Participante implements Serializable {

private List<AssociacaoParticipante> listaAssocPartic;

	public void setListaAssocPartic(List<AssociacaoParticipante> listaAssocPartic) {
		this.listaAssocPartic = listaAssocPartic;
	}
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "pk.participante")
	public List<AssociacaoParticipante> getListaAssocPartic() {
		if(listaAssocPartic == null)
			listaAssocPartic = new ArrayList<AssociacaoParticipante>();
		return listaAssocPartic;
	}

}
AssociadoParticipante
@Entity
@Table(name="SIC_ASSOC_PARTIC")
public class AssociacaoParticipante implements Serializable {

private AssociacaoParticipantePk pk;
public void setPk(AssociacaoParticipantePk pk) {
		this.pk = pk;
	}
@EmbeddedId
	public AssociacaoParticipantePk getPk() {
		if(pk == null)
			pk = new AssociacaoParticipantePk();
		return pk;
	}

}
AssociacaoParticipantePk
/**
 * 
 */
package br.gov.cvm.rfe.dominio.corporativo.entidades;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Embeddable;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.JoinColumns;
import javax.persistence.ManyToOne;

/**
 * @author rafaela.adriana
 *
 */
@Embeddable
public class AssociacaoParticipantePk implements Serializable {

	private static final long serialVersionUID = 1L;
	
	//private Integer cdTpPartic;
	
	//private String cdTpPfPj;
	
	//private Long nrPfPj;	

	//private Date dtRegPartic;
	
	private Integer cdTpAssocPartic;
		
	private Date dtInicioAssocPartic;

	private Participante participante;
	
	/*public void setCdTpPartic(Integer cdTpPartic) {
		this.cdTpPartic = cdTpPartic;
	}

	@Column(name="CD_TP_PARTIC")
	public Integer getCdTpPartic() {
		return cdTpPartic;
	}*/
	
	public void setParticipante(Participante participante) {
		this.participante = participante;
	}

	@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
	@JoinColumns({
	@JoinColumn(name="CD_TP_PF_PJ",referencedColumnName="CD_TP_PF_PJ",insertable=false,updatable=false),
	@JoinColumn(name="NR_PF_PJ",referencedColumnName="NR_PF_PJ",insertable=false,updatable=false),
	@JoinColumn(name="CD_TP_PARTIC",referencedColumnName="CD_TP_PARTIC",insertable=false,updatable=false),
	@JoinColumn(name="DT_REG_PARTIC",referencedColumnName="DT_REG_PARTIC",insertable=false,updatable=false)
	})
	public Participante getParticipante() {
		return participante;
	}
	
	/*public void setCdTpPfPj(String cdTpPfPj) {
		this.cdTpPfPj = cdTpPfPj;
	}

	@Column(name="CD_TP_PF_PJ")
	public String getCdTpPfPj() {
		return cdTpPfPj;
	}

	public void setNrPfPj(Long nrPfPj) {
		this.nrPfPj = nrPfPj;
	}

	@Column(name="NR_PF_PJ")
	public Long getNrPfPj() {
		return nrPfPj;
	}

	public void setDtRegPartic(Date dtRegPartic) {
		this.dtRegPartic = dtRegPartic;
	}

	@Column(name="DT_REG_PARTIC")
	public Date getDtRegPartic() {
		return dtRegPartic;
	}*/

	public void setCdTpAssocPartic(Integer cdTpAssocPartic) {
		this.cdTpAssocPartic = cdTpAssocPartic;
	}

	@Column(name="CD_TP_ASSOC_PARTIC")
	public Integer getCdTpAssocPartic() {
		return cdTpAssocPartic;
	}

	public void setDtInicioAssocPartic(Date dtInicioAssocPartic) {
		this.dtInicioAssocPartic = dtInicioAssocPartic;
	}

	@Column(name="DT_INICIO_ASSOC_PARTIC")
	public Date getDtInicioAssocPartic() {
		return dtInicioAssocPartic;
	}
	
}
O erro:
Could not synchronize database state with session
org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1
A

cara,

posta o log do erro completo.

t+

evertonsilvagomesjav

Log:

09:06:39,999 ERROR [AbstractFlushingEventListener] Could not synchronize database state with session org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1 at org.hibernate.jdbc.Expectations$BasicExpectation.checkBatched(Expectations.java:61) at org.hibernate.jdbc.Expectations$BasicExpectation.verifyOutcome(Expectations.java:46) at org.hibernate.jdbc.NonBatchingBatcher.addToBatch(NonBatchingBatcher.java:24) at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2403) at org.hibernate.persister.entity.AbstractEntityPersister.updateOrInsert(AbstractEntityPersister.java:2307) at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2607) at org.hibernate.action.EntityUpdateAction.execute(EntityUpdateAction.java:92) at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:250) at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:234) at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:142) 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.ejb.AbstractEntityManagerImpl.flush(AbstractEntityManagerImpl.java:296) at org.jboss.ejb3.entity.TransactionScopedEntityManager.flush(TransactionScopedEntityManager.java:211) at br.gov.cvm.rfe.dominio.daos.GenericDaoBean.atualiza(GenericDaoBean.java:52) at br.gov.cvm.rfe.dominio.daos.GenericDaoBean.atualiza(GenericDaoBean.java:38) at br.gov.cvm.rfe.servicos.ParticipanteMercadoServiceBean.salvaParticipanteMercado(ParticipanteMercadoServiceBean.java:29) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:112) at org.jboss.ejb3.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:166) at org.jboss.ejb3.interceptor.EJB3InterceptorsInterceptor.invoke(EJB3InterceptorsInterceptor.java:63) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor.invoke(TransactionScopedEntityManagerInterceptor.java:54) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsInterceptor.java:47) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:79) at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:191) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:95) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:62) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss.aspects.security.AuthenticationInterceptor.invoke(AuthenticationInterceptor.java:77) at org.jboss.ejb3.security.Ejb3AuthenticationInterceptor.invoke(Ejb3AuthenticationInterceptor.java:110) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:46) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:106) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss.ejb3.stateless.StatelessContainer.localInvoke(StatelessContainer.java:240) at org.jboss.ejb3.stateless.StatelessContainer.localInvoke(StatelessContainer.java:210) at org.jboss.ejb3.stateless.StatelessLocalProxy.invoke(StatelessLocalProxy.java:84) at $Proxy132.salvaParticipanteMercado(Unknown Source) at br.gov.cvm.rfe.web.backingBeans.CarteiraBB.insere(CarteiraBB.java:339) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.apache.el.parser.AstValue.invoke(AstValue.java:131) at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276) at com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:68) at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:77) at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:91) at javax.faces.component.UICommand.broadcast(UICommand.java:383) at org.ajax4jsf.component.AjaxActionComponent.broadcast(AjaxActionComponent.java:55) at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:321) at org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:296) at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:253) at org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:466) at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97) at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251) at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:244) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 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.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:147) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179) at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446) at java.lang.Thread.run(Unknown Source)

A

cara,

tenta pegar o log de erro q vai dar na sua camada de persistencia, ta faltando mais informações.

t

Criado 29 de outubro de 2011
Ultima resposta 31 de out. de 2011
Respostas 15
Participantes 2