Problemas para salvar no hibernate

Prezados Colegas,

tento salvar um objeto no hibernate mas está dando a seguinte mensagem de erro:

alguém tem alguma idéia?

Coloca o codigo aqui para podermos visualizar a sua implementção.

Mas, vc deve esta tentando manipular objetos diferentes com o mesmo Id na mesma sessão.

Fecha um sessao, antes de começar a manipular um outro objeto

QuestionarioTest

package br.gov.inca.publico.test;

import java.util.HashSet;
import java.util.Set;

import br.gov.inca.publico.bean.ItenInfraEstrutura;
import br.gov.inca.publico.dao.Dao;
import br.gov.inca.rcbp.bean.InfraEstruturaRCBP;
import br.gov.inca.rcbp.bean.QuestionarioRCBP;
import br.gov.inca.rcbp.bean.RCBP;
import br.gov.inca.rcbp.bean.StatusQuestionario;

public class QuestionarioTest {
	public static void main(String args[]) {
		try {
			QuestionarioRCBP tmp = new QuestionarioRCBP();
			tmp.setSituacaoQuestionario(StatusQuestionario.RASCUNHO);
			// teste
			RCBP rcbp = new RCBP();
			rcbp.setIdInstituicao(200);
			tmp.setRcbp(rcbp);
			tmp.setQualEstudoSobrevida(" ");
			// fim teste
			Set<InfraEstruturaRCBP> infras = new HashSet<InfraEstruturaRCBP>();
			Dao<ItenInfraEstrutura> daoItenInfra = new Dao<ItenInfraEstrutura>();
			for (ItenInfraEstrutura itemInfra : daoItenInfra.listar(new ItenInfraEstrutura())) {
				InfraEstruturaRCBP infra = new InfraEstruturaRCBP();
				infra.setItemInfraEstrutura(itemInfra);
				infra.setQuestionario(tmp);
				infra.setQtdItem(new Integer(10));
				infras.add(infra);
			}

			tmp.setInfraEstruturas(infras);
			tmp.setAbrangenciaPopulacao("teste");
			tmp.setAnoImplantacao("2006");
			tmp.setAnoInicioColeta("2007");
			Dao<QuestionarioRCBP> daoQuestionario = new Dao<QuestionarioRCBP>();
			daoQuestionario.inserirAtualizar(tmp);

		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

QuestionarioRCBP

[code]package br.gov.inca.rcbp.bean;

import java.util.Date;
import java.util.HashSet;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

import br.gov.inca.publico.bean.TipoFlag;

@Entity
@Table(name = “rcbp_questionario”, schema = “rcbp”)
@SequenceGenerator(name = “SEQUENCE”, sequenceName = “rcbp.rcbp_questionario_id_questionario_rcbp_seq”,allocationSize=1)
public class QuestionarioRCBP {

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQUENCE")
@Column(name = "id_questionario_rcbp")
private int idQuestionarioRCBP;

@ManyToOne(cascade = CascadeType.PERSIST)
@JoinColumn(name = "id_instituicao")
private RCBP rcbp;

@OneToMany(mappedBy = "questionario",cascade=CascadeType.ALL, fetch=FetchType.LAZY)
//@JoinColumn(name = "id_item_infra_estrutura")
private Set<InfraEstruturaRCBP> infraEstruturas = new HashSet<InfraEstruturaRCBP>();

@OneToMany(mappedBy = "questionario", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private Set<QuadroDePessoal> quadroDePessoal = new HashSet<QuadroDePessoal>();

@Column(name = "ds_abrangencia_populacao")
private String abrangenciaPopulacao;

@Column(name = "aa_implantacao")
private String anoImplantacao;

@Column(name = "aa_inicio_coleta")
private String anoInicioColeta;

@Column(name = "nm_orgao_responsavel_organograma")
private String orgaoResponsavelOrganograma;

@Column(name = "fg_utiliza_sisbasepop_inca")
private String utilizaSisbasepopInca = TipoFlag.NAO;

@Column(name = "ds_versao_sisbasepop_inca")
private String versaoSisbasepopInca;

@Column(name = "fg_consulta_comissao_assessora")
private String consultaComissaoAcessoria = TipoFlag.NAO;

@Column(name = "fg_gerencia_recurso_ppi")
private String gerenciaRecursoPPI = TipoFlag.NAO;

@Column(name = "fg_gerencia_recursos_pav")
private String gerenciaRecursoPAV = TipoFlag.NAO;

@Column(name = "ds_periodo_enviado_iarc")
private String periodoEnviadoIARC;

@Column(name = "fg_consulta_banco_sim")
private String consultaBancoSIM = TipoFlag.NAO;

@Column(name = "fg_consulta_banco_apac")
private String consultaBancoAPAC = TipoFlag.NAO;

@Column(name = "fg_faz_seguimento")
private String fazSeguimento = TipoFlag.NAO;

@Column(name = "fg_participa_estudo_sobrevida")
private String participalEstudoSobrevida = TipoFlag.NAO;

@Column(name = "ds_qual_estudo_sobrevida")
private String qualEstudoSobrevida;

@Column(name = "fg_retorna_informacoes_sim")
private String retornaInformacoesSIM = TipoFlag.NAO;

@Column(name = "fg_vigilancia_dant")
private String vigilanciaDANT = TipoFlag.NAO;

@Column(name = "fg_regulacao_rao")
private String regulacaoRAO = TipoFlag.NAO;

@Column(name = "fg_controle_colo_mama")
private String controleColoMama = TipoFlag.NAO;

@Column(name = "ds_outra_atividade")
private String outraAtividade;

@Column(name = "fg_perfil_incidencia")
private String perfilIncidencia = TipoFlag.NAO;

@Column(name = "fg_analise_espacial_incidencia")
private String analiseEspecialIncidencia = TipoFlag.NAO;

@Column(name = "fg_relatorios_fontes_notificadoras")
private String relatoriosFontesNotificadoras = TipoFlag.NAO;

@Column(name = "dt_preenchimento")
private Date dataPreenchimento = new Date();

@Column(name = "st_questionario")
private String situacaoQuestionario;

public String getAbrangenciaPopulacao() {
	return abrangenciaPopulacao;
}

public void setAbrangenciaPopulacao(String abrangenciaPopulacao) {
	this.abrangenciaPopulacao = abrangenciaPopulacao;
}

public String getAnaliseEspecialIncidencia() {
	return analiseEspecialIncidencia;
}

public void setAnaliseEspecialIncidencia(String analiseEspecialIncidencia) {
	this.analiseEspecialIncidencia = analiseEspecialIncidencia;
}

public String getAnoImplantacao() {
	return anoImplantacao;
}

public void setAnoImplantacao(String anoImplantacao) {
	this.anoImplantacao = anoImplantacao;
}

public String getAnoInicioColeta() {
	return anoInicioColeta;
}

public void setAnoInicioColeta(String anoInicioColeta) {
	this.anoInicioColeta = anoInicioColeta;
}

public String getConsultaBancoAPAC() {
	return consultaBancoAPAC;
}

public void setConsultaBancoAPAC(String consultaBancoAPAC) {
	this.consultaBancoAPAC = consultaBancoAPAC;
}

public String getConsultaBancoSIM() {
	return consultaBancoSIM;
}

public void setConsultaBancoSIM(String consultaBancoSIM) {
	this.consultaBancoSIM = consultaBancoSIM;
}

public String getConsultaComissaoAcessoria() {
	return consultaComissaoAcessoria;
}

public void setConsultaComissaoAcessoria(String consultaComissaoAcessoria) {
	this.consultaComissaoAcessoria = consultaComissaoAcessoria;
}

public String getControleColoMama() {
	return controleColoMama;
}

public void setControleColoMama(String controleColoMama) {
	this.controleColoMama = controleColoMama;
}

public Date getDataPreenchimento() {
	return dataPreenchimento;
}

public void setDataPreenchimento(Date dataPreenchimento) {
	this.dataPreenchimento = dataPreenchimento;
}

public String getFazSeguimento() {
	return fazSeguimento;
}

public void setFazSeguimento(String fazSeguimento) {
	this.fazSeguimento = fazSeguimento;
}

public String getGerenciaRecursoPAV() {
	return gerenciaRecursoPAV;
}

public void setGerenciaRecursoPAV(String gerenciaRecursoPAV) {
	this.gerenciaRecursoPAV = gerenciaRecursoPAV;
}

public String getGerenciaRecursoPPI() {
	return gerenciaRecursoPPI;
}

public void setGerenciaRecursoPPI(String gerenciaRecursoPPI) {
	this.gerenciaRecursoPPI = gerenciaRecursoPPI;
}

public int getIdQuestionarioRCBP() {
	return idQuestionarioRCBP;
}

public void setIdQuestionarioRCBP(int idQuestionarioRCBP) {
	this.idQuestionarioRCBP = idQuestionarioRCBP;
}

public Set<InfraEstruturaRCBP> getInfraEstruturas() {
	return infraEstruturas;
}

public void setInfraEstruturas(Set<InfraEstruturaRCBP> infraEstruturas) {
	this.infraEstruturas = infraEstruturas;
}

public String getOrgaoResponsavelOrganograma() {
	return orgaoResponsavelOrganograma;
}

public void setOrgaoResponsavelOrganograma(String orgaoResponsavelOrganograma) {
	this.orgaoResponsavelOrganograma = orgaoResponsavelOrganograma;
}

public String getOutraAtividade() {
	return outraAtividade;
}

public void setOutraAtividade(String outraAtividade) {
	this.outraAtividade = outraAtividade;
}

public String getParticipalEstudoSobrevida() {
	return participalEstudoSobrevida;
}

public void setParticipalEstudoSobrevida(String participalEstudoSobrevida) {
	this.participalEstudoSobrevida = participalEstudoSobrevida;
}

public String getPerfilIncidencia() {
	return perfilIncidencia;
}

public void setPerfilIncidencia(String perfilIncidencia) {
	this.perfilIncidencia = perfilIncidencia;
}

public String getPeriodoEnviadoIARC() {
	return periodoEnviadoIARC;
}

public void setPeriodoEnviadoIARC(String periodoEnviadoIARC) {
	this.periodoEnviadoIARC = periodoEnviadoIARC;
}

public Set<QuadroDePessoal> getQuadroDePessoal() {
	return quadroDePessoal;
}

public void setQuadroDePessoal(Set<QuadroDePessoal> quadroDePessoal) {
	this.quadroDePessoal = quadroDePessoal;
}

public String getQualEstudoSobrevida() {
	return qualEstudoSobrevida;
}

public void setQualEstudoSobrevida(String qualEstudoSobrevida) {
	this.qualEstudoSobrevida = qualEstudoSobrevida;
}

public RCBP getRcbp() {
	return rcbp;
}

public void setRcbp(RCBP rcbp) {
	this.rcbp = rcbp;
}

public String getRegulacaoRAO() {
	return regulacaoRAO;
}

public void setRegulacaoRAO(String regulacaoRAO) {
	this.regulacaoRAO = regulacaoRAO;
}

public String getRelatoriosFontesNotificadoras() {
	return relatoriosFontesNotificadoras;
}

public void setRelatoriosFontesNotificadoras(
		String relatoriosFontesNotificadoras) {
	this.relatoriosFontesNotificadoras = relatoriosFontesNotificadoras;
}

public String isRetornaInformacoesSIM() {
	return retornaInformacoesSIM;
}

public void setRetornaInformacoesSIM(String retornaInformacoesSIM) {
	this.retornaInformacoesSIM = retornaInformacoesSIM;
}

public String getSituacaoQuestionario() {
	return situacaoQuestionario;
}

public void setSituacaoQuestionario(String situacaoQuestionario) {
	this.situacaoQuestionario = situacaoQuestionario;
}

public String getUtilizaSisbasepopInca() {
	return utilizaSisbasepopInca;
}

public void setUtilizaSisbasepopInca(String utilizaSisbasepopInca) {
	this.utilizaSisbasepopInca = utilizaSisbasepopInca;
}

public String getVersaoSisbasepopInca() {
	return versaoSisbasepopInca;
}

public void setVersaoSisbasepopInca(String versaoSisbasepopInca) {
	this.versaoSisbasepopInca = versaoSisbasepopInca;
}

public String getVigilanciaDANT() {
	return vigilanciaDANT;
}

public void setVigilanciaDANT(String vigilanciaDANT) {
	this.vigilanciaDANT = vigilanciaDANT;
}

}
[/code]

InfraEstruturaRCBP


package br.gov.inca.rcbp.bean;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

import br.gov.inca.publico.bean.ItenInfraEstrutura;

@Entity
@Table(name = "rcbp_infra_estrutura", schema = "rcbp")
@SequenceGenerator(name = "SEQUENCE", sequenceName = "rcbp.rcbp_infra_estrutura_id_infraestrutura_rcbp_seq",allocationSize=1)
public class InfraEstruturaRCBP {
	@Id
	@Column(name = "id_infraestrutura_rcbp")
	private int idInfraEstruturaRCBP;

	@ManyToOne(cascade = CascadeType.REFRESH, fetch=FetchType.LAZY, targetEntity=QuestionarioRCBP.class)
	@JoinColumn(name = "id_questionario_rcbp")
	private QuestionarioRCBP questionario;

	@ManyToOne(cascade = CascadeType.PERSIST)
	@JoinColumn(name = "id_item_infra_estrutura")
	private ItenInfraEstrutura itemInfraEstrutura;

	@Column(name = "qt_item")
	private int qtdItem;

	public int getIdInfraEstruturaRCBP() {
		return idInfraEstruturaRCBP;
	}

	public void setIdInfraEstruturaRCBP(int idInfraEstruturaRCBP) {
		this.idInfraEstruturaRCBP = idInfraEstruturaRCBP;
	}

	public ItenInfraEstrutura getItemInfraEstrutura() {
		return itemInfraEstrutura;
	}

	public void setItemInfraEstrutura(ItenInfraEstrutura itemInfraEstrutura) {
		this.itemInfraEstrutura = itemInfraEstrutura;
	}

	public int getQtdItem() {
		return qtdItem;
	}

	public void setQtdItem(int qtdItem) {
		this.qtdItem = qtdItem;
	}

	public QuestionarioRCBP getQuestionario() {
		return questionario;
	}

	public void setQuestionario(QuestionarioRCBP questionario) {
		this.questionario = questionario;
	}

}

Não revisei seu código, mas o problema é que você está tentando associar duas instâncias diferentes de um objeto, que possuem o MESMO id, em sessions diferentes. Algo tipo isso:

Pessoa p1 = new Pessoa(1);//considerando que estou passando o Id no construtor Pessoa p2 = new Pessoa(1); Session s1 = HibernateUtil.getNewSession(); Session s2 = HibernateUtil.getNewSession(); s1.save(p1); s2.save(p2);//aqui ele lançaria a exception que você está tendo