Problemas para salvar no hibernate

3 respostas
filipeandrep

Prezados Colegas,

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

alguém tem alguma idéia?

3 Respostas

J

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

filipeandrep
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
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;
	}
}
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;
	}

}
plentz

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

Criado 24 de maio de 2007
Ultima resposta 27 de mai. de 2007
Respostas 3
Participantes 3