ERRO: save the transient instance before flushing

7 respostas
dahenz

Bom dia, estou tentando persistir uma classe que contem alguns relacionamentos em sua modelagem...

Porém alguns relacionamentos são NULLABLE portanto não necessariamente devem ser persistidos.....

segue a classe ProjetoBean:

@Entity @Table (name="projeto")
public class ProjetoBean {
	@Id @GeneratedValue
	private Long id;
	private String data;
	private String objeto;
	@OneToOne
	@JoinColumn(name="emenda")	
	private EmendaBean emenda = new EmendaBean();

EmendaBean -> NullAble:

@Entity @Table(name="emendas")
public class EmendaBean {

	@Id @GeneratedValue
	private Long id;
	private String descricao;
	private Integer bancada;
	@OneToOne
	@JoinColumn(name="cidade")
	private CidadeBean cidade = new CidadeBean();

Ao salvar o sistema joga o erro:

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

Alguém me ajude...

7 Respostas

DeGuedes

Cara esse erro acontece quando vc esta referenciando um objeto a outro objeto, q ainda nao foi salvo no banco de dados…

[]'s

dahenz

Na verdade o objeto que estou passando, ele recebe null pois na tela eu nao sou obrigado a vincular o mesmo!!!

Como faço para o sistema nao persistir esse objeto quando está null???

Obrigado

DeGuedes

Cara nas minhas aplicações eu faço o seguinte eu verifico se objeto é null… se sim não seto ele… entendeu?

TIpo ao inves de fazer isso:

classe.setX(null); // ou o seu objeto Null

eu nao seto nada… ele automaticamente salva como null no banco de dados…

[]'s

dahenz

é o que faço… ao executar o facade eu declaro ProjetoBean como segue:

Ou seja, projetoBean é null, e a classe projetoBean.emendaBean é null, até que eu acrescente algo…

Estranho…

DeGuedes

dahenz:
é o que faço… ao executar o facade eu declaro ProjetoBean como segue:

Ou seja, projetoBean é null, e a classe projetoBean.emendaBean é null, até que eu acrescente algo…

Estranho…

Posta como vc esta setando, para analisarmos melhor…

[]'s

dahenz

Na verdade eu nao estou setando valor!

Tenho uma tela com a data, o objeto e a emenda, que pode ser atribuída uma emenda caso o usuario queira, caso ele nao queira ele nem seleciona pois no meu banco ele é nullable! agora quando salvo dá o erro!!!

Se eu setar valor funciona!!!

CintiaDR
private EmendaBean emenda = new EmendaBean();  

private CidadeBean cidade = new CidadeBean();

Coloque em qualquer ponto antes de salvar:

setEmenda(null);  
setCidade(null);

Se é null, é null. Não é um objeto novo cujo ID é null.

Criado 23 de fevereiro de 2011
Ultima resposta 23 de fev. de 2011
Respostas 7
Participantes 3