TransientObjectException ao persistir duas entidades

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

esqueceu de implementar Serializable nas classes:?:
oh:

 public class Usuario implements Serializable(

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

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