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!