Erro ao salvar Hibernate

4 respostas
J

Bom dia a todos.

Estou tentando salvar um objeto que tem este outro como atributo:

@JoinColumn(name = "tsf_id", referencedColumnName = "tsf_id") @ManyToOne private TsfTipoSaidaFuncionario tsf;

Este, não é obrigatório no meu BD, entretanto, apresenta o seguinte erro:

org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: br.com.planetaeducacao.fenix.bd.beans.TsfTipoSaidaFuncionario
        at org.hibernate.engine.ForeignKeys.getEntityIdentifierIfNotUnsaved(ForeignKeys.java:242)

Bem, pela análise que eu fiz e pelas buscas que já realizei, este objeto tem alguma referência que não foi setada (FK), entretanto, ele não é obrigatório, quero mandar ele null para o BD as vezes.

Como contorno essa situação?

Já tentei inserir o flush aqui, mas, não funcionou.

// inserir Session session = HibernateUtil.openSession(); RefReferenciaFuncionarioDao refReferenciaFuncionarioDao = new RefReferenciaFuncionarioDao(session); refReferenciaFuncionarioDao.save(ref); session.flush(); HibernateUtil.closeSession();

Construtor da DAO:

public RefReferenciaFuncionarioDao(Session session) { super(session); }

Desde já, agradeço a todos.

4 Respostas

M

jcmaster,

para aceitar null nesse atributo é só colocar @JoinColumn(nullable=true)
mas acho que não é esse o problema.
parece que quando você está tentando salvar esse objeto, o TsfTipoSaidaFuncionario tsf ainda não tem uma referencia no banco, por isso ele ainda é transiente
tenta dar um save() nesse tsf primeiro, deve resolver…
ou para esse atributo ser salvo (criado) no banco automaticamente você pode colocar @JoinColumn(insertable=true)

espero ter ajudado

[]´s

J

Então Mathias85, entendi o que disse, entretanto, eu não gostaria de salvar o TsfTipoSaidaFuncionario nesse caso. Ele nem está como cascade, justamente pra não tentar salvar em cascata … Queria só salvar o ref com o TsfTipoSaidaFuncionario null na tabela do ref, entendeu?

M

entendi…

e setando TsfTipoSaidaFuncionario como null não ta funcionando? deveria funcionar…

J

Pois é, setei como null, depurei pra verificar e está null mesmo, mas, dá o erro que eu disse, muito estranho !!!

Criado 8 de março de 2010
Ultima resposta 8 de mar. de 2010
Respostas 4
Participantes 2