TransientObjectException ao persistir duas entidades

3 respostas
R

Quando estou executando o metodo para persistir minhas duas entidades, recebo o famoso TOE (org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: br.com.faro.meutreino.bean.Usuario)

public class Usuario (

@Id

private Long codigoUsuario;

private String nome;

// get e set

)
public class Assinatura (

@Id

private Long codigoAssinatura;

@JoinColumn(name = codigoUsuario, referencedColumnName = codigoUsuario)

@ManyToOne(cascade=CascadeType.PERSIST)

private Usuario usuario;

// get e set

)

Achei que o Cascade Persist iria solucionar esse problema mas não deu certo, alguém possui uma sugestão?
Estou usando Spring no projeto.

public void confirmarAssinatura() {

usuarioService.salvarUsuario(usuario);

assinatura.setUsuario(usuario);

assinaturaService.salvarAssinatura(assinatura);

}

3 Respostas

Javabuntu

esqueceu de implementar Serializable nas classes:?:
oh:

public class Usuario implements Serializable(
R

JavaBuntu no projeto eu implementei, só omiti aqui no post pra ficar menor :slight_smile:

Bom consegui fazer funcionar essa implementação utilizando o “persist” mas ainda estou em busca de ver uma solucao usando o saveOrUpdate, voce sabe me falar se é possivel ?

Obrigado

Marky.Vasconcelos

Uma solução(Gambiarra) seria fazer isso

if(objeto.getCodigoUsuario() == 0)//Trata-se de um objeto novo pois ele não recebeu nenhum Id ainda
  sessao.persist(objeto);
else //Caso já tenha um Id só update
  sessao.update(objeto);

Mas não funcionaria caso voce atibui-se um id para ele

Criado 12 de abril de 2008
Ultima resposta 13 de abr. de 2008
Respostas 3
Participantes 3