[Hibernate] Persistindo dois objetos diferentes ao mesmo tempo

0 respostas
A

Olá pessoa do fórum… estou novamente precisando da ajuda de todos…

Tenho a seguinte situação…

Tenho uma Questão Base que possui uma lista de Respostas Base. Quando tento persistir a Questão Base, o hibernate devolve esse erro dizendo que não conseguiu persistir…

object references an unsaved transient instance - save the transient instance before flushing:

Pesquisando na internet me aconselharam a persistir o objeto Resposta Base primeiro pra só depois persistir Questão Base… Só que não posso fazer isso, devido a chave estrangeira de Questão Base em Resposta Base.

Meu mapeamento está assim…

QuestaoBaseDTO

package br.sdg.principal.questionario;

import java.util.Set;

import br.sdg.portal.UsuarioDTO;
import br.sdg.principal.dominio.StatusDTO;
import br.sdg.principal.dominio.TipoDTO;

/**
 * Referente a tabela tab_questaobase.
 * 
 * @author Anderson Cardoso
 * @version 1.0
 * @since 01/07/2008
 */
public class QuestaoBaseDTO {

	private Long quesSeq;
	private String quesDesc;
	private String quesExpl;
	private Long quesOrdm;
	
	private TipoDTO tipo;
	private StatusDTO status;
	private UsuarioDTO usuario;
	private QuestaoBaseDTO grupo;
	
	private RespostaBaseDTO respostaBase;
	
	private Set<RespostaBaseDTO> listaRespostaBase;
	private Set<QuestaoBaseDTO> listaQuestaoBase;
	
	private Boolean confirmacao;
	
	public Long getQuesSeq() {
		return quesSeq;
	}
	public void setQuesSeq(Long quesSeq) {
		this.quesSeq = quesSeq;
	}
	public String getQuesDesc() {
		return quesDesc;
	}
	public void setQuesDesc(String quesDesc) {
		this.quesDesc = quesDesc;
	}
	public String getQuesExpl() {
		return quesExpl;
	}
	public void setQuesExpl(String quesExpl) {
		this.quesExpl = quesExpl;
	}
	public Long getQuesOrdm() {
		return quesOrdm;
	}
	public void setQuesOrdm(Long quesOrdm) {
		this.quesOrdm = quesOrdm;
	}
	public TipoDTO getTipo() {
		return tipo;
	}
	public void setTipo(TipoDTO tipo) {
		this.tipo = tipo;
	}
	public StatusDTO getStatus() {
		return status;
	}
	public void setStatus(StatusDTO status) {
		this.status = status;
	}
	public UsuarioDTO getUsuario() {
		return usuario;
	}
	public void setUsuario(UsuarioDTO usuario) {
		this.usuario = usuario;
	}
	public QuestaoBaseDTO getGrupo() {
		return grupo;
	}
	public void setGrupo(QuestaoBaseDTO grupo) {
		this.grupo = grupo;
	}
	public Set<QuestaoBaseDTO> getListaQuestaoBase() {
		return listaQuestaoBase;
	}
	public void setListaQuestaoBase(Set<QuestaoBaseDTO> listaQuestaoBase) {
		this.listaQuestaoBase = listaQuestaoBase;
	}
	public Boolean getConfirmacao() {
		return confirmacao;
	}
	public void setConfirmacao(Boolean confirmacao) {
		this.confirmacao = confirmacao;
	}
	public Set<RespostaBaseDTO> getListaRespostaBase() {
		return listaRespostaBase;
	}
	public void setListaRespostaBase(Set<RespostaBaseDTO> listaRespostaBase) {
		this.listaRespostaBase = listaRespostaBase;
	}
	public RespostaBaseDTO getRespostaBase() {
		return respostaBase;
	}
	public void setRespostaBase(RespostaBaseDTO respostaBase) {
		this.respostaBase = respostaBase;
	}
}

QuestaoBase.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
	"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
	"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="br.sdg.principal.questionario">
  <class name="QuestaoBaseDTO" table="tab_questaobase">
  
  	<!-- Identificador da classe -->
	<id name="quesSeq">
   		<generator class="increment"/>
  	</id>
  
  	<!-- Propriedades da classe -->
	<property name="quesDesc"/>    
	<property name="quesExpl"/>
	<property name="quesOrdm"/>
   
   <!-- Relacionamentos da classe -->
   <many-to-one
		   class="br.sdg.principal.dominio.TipoDTO"
		   column="tipoSeq"
		   name="tipo"/>
		   
	<many-to-one
		   class="br.sdg.principal.dominio.StatusDTO"
		   column="statSeq"
		   name="status"/>	   
	
	<many-to-one
		   class="br.sdg.portal.UsuarioDTO"
		   column="usuaSeq"
		   name="usuario"/>
		   
     <many-to-one
		   class="br.sdg.principal.questionario.QuestaoBaseDTO"
		   column="quesPai"
		   name="grupo"/>
      
     <set name="listaQuestaoBase" inverse="true">
       	<key column="quesSeq"/>
       	<one-to-many class="br.sdg.principal.questionario.QuestaoBaseDTO" />
	</set>
	
	<set
        name="listaRespostaBase"
        lazy="true"
        inverse="true"
        cascade="all">
        <key column="quesSeq"/>
        <one-to-many  
        		class="br.sdg.principal.questionario.RespostaBaseDTO"
        />
  	</set>
  </class>
</hibernate-mapping>

RespostaBaseDTO

package br.sdg.principal.questionario;

import br.sdg.portal.UsuarioDTO;
import br.sdg.principal.dominio.TipoDecisaoDTO;

/**
 * Referente a tabela tab_respostabase.
 * 
 * @author Anderson Cardoso
 * @version 1.0
 * @since 01/07/2008
 */
public class RespostaBaseDTO {

	private Long resbSeq;
	private String resbVlor;
	private String resbDesc;
	
	private TipoDecisaoDTO tipoDecisao;
	private UsuarioDTO usuario;
	private QuestaoBaseDTO questaoBase;
	
	public Long getResbSeq() {
		return resbSeq;
	}
	public void setResbSeq(Long resbSeq) {
		this.resbSeq = resbSeq;
	}
	public String getResbVlor() {
		return resbVlor;
	}
	public void setResbVlor(String resbVlor) {
		this.resbVlor = resbVlor;
	}
	public String getResbDesc() {
		return resbDesc;
	}
	public void setResbDesc(String resbDesc) {
		this.resbDesc = resbDesc;
	}
	public TipoDecisaoDTO getTipoDecisao() {
		return tipoDecisao;
	}
	public void setTipoDecisao(TipoDecisaoDTO tipoDecisao) {
		this.tipoDecisao = tipoDecisao;
	}
	public UsuarioDTO getUsuario() {
		return usuario;
	}
	public void setUsuario(UsuarioDTO usuario) {
		this.usuario = usuario;
	}
	public QuestaoBaseDTO getQuestaoBase() {
		return questaoBase;
	}
	public void setQuestaoBase(QuestaoBaseDTO questaoBase) {
		this.questaoBase = questaoBase;
	}
}

RespostaBase.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
	"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
	"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="br.sdg.principal.questionario">
  <class name="RespostaBaseDTO" table="tab_respostabase" lazy="false">
  
  	<!-- Identificador da classe -->
	<id name="resbSeq">
   		<generator class="increment"/>
  	</id>
  
  	<!-- Propriedades da classe -->
	<property name="resbVlor"/>    
	<property name="resbDesc"/>
	
   
   <!-- Relacionamentos da classe -->
 	<many-to-one
		   class="br.sdg.principal.dominio.TipoDecisaoDTO"
		   column="tdecSeq"
		   name="tipoDecisao"/>
	
	<many-to-one
		   class="br.sdg.portal.UsuarioDTO"
		   column="usuaSeq"
		   name="usuario"/>
  
  	<many-to-one
           class="br.sdg.principal.questionario.QuestaoBaseDTO"
           column="quesSeq"
           name="questaoBase"/>
 </class>
	
</hibernate-mapping>

Desde já agradeço, pois qualquer ajuda será bem-vinda!

Criado 2 de julho de 2008
Respostas 0
Participantes 1