Object references an unsaved transient instance

1 resposta
Diego_Adriano
Galera estou tendo o seguinte erro ao tentar persistir um Objeto:
org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: br.com.duxsolutions.model.ContasaReceber.comissao -> br.com.duxsolutions.model.Comissoes

Se eu não inserir a Lista de ContasaReceber no Objeto Comissão consigo persistir mas inserindo ela acabo tendo esse erro ...

try {
			
			if( !getContasaReceber().isEmpty() ){
				
				contasaReceber = null;
				ContasaReceberRepository crr = new ContasaReceberRepository(getEntityManager());
				contasaReceber = crr.aReceberPorUsuarioComissaoProduto(getUsuarioComissao().getId(), getInicio(), getFim(),"P");
				
				for(ContasaReceber cr : getContasaReceber()){
					cr.setComissao(comissao);
					//comissao.getContasReceber().add(cr);
				}
				
			}
				
			if( !getPlanos().isEmpty() ){
				
				SaidaRepository sr = new SaidaRepository(getEntityManager());
				List<DadosSaida> dadosAux = new ArrayList<DadosSaida>();
				
				for( Planos plano : planos ){

					dadosAux.addAll(sr.saidaRetornaDadosComissaoPlanoPromotor(getUsuarioComissao().getId(), getInicio(), getFim(), plano.getId()));
					
					
				}	
				
				for( DadosSaida ds : dadosAux){
				
					if( ds.getTipoVenda().equalsIgnoreCase("PL") ){
					
						ds.setComissao(comissao);
						dadosSaida.add(ds);

					}
				}
			}
			
			comissao.setDadosSaida(dadosSaida);
			comissao.setContasReceber(contasaReceber);
			comissao.setInicio(getInicio());
			comissao.setFim(getFim());
			comissao.setPercentualCalculo(getParametroComissao().getPercentual());
			comissao.setTotalVendaProdutos(getTotalVendaProdutos());
			comissao.setTotalComissaoPlanosReceber(getTotalComissaoPlanosReceber());
			comissao.setTotalComissaoProdutosReceber(getTotalComissaoProdutosReceber());
			comissao.setTotalComissaoReceber(getTotalComissaoReceber());
			comissao.setUsuarioFechamento(getUsuarioSessao());
			comissao.setDataFechamento(new Date());
			comissao.setHoraFechamento(new Date());
			comissao.setSituacao("F");
			
			//this.comissao.setId(comissao.getId() == 0 ? null : comissao.getId());
			
			ComissoesRepository crr = new ComissoesRepository(getEntityManager());
			crr.gravaComissao(comissao);
			
			limpar();
			
			FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(
					FacesMessage.SEVERITY_INFO,""+getUsuarioSessao().getNome(), 
					" - COMISSÃO FECHADA COM SUCESSO"));
			
		} catch (Exception e) {
			System.err.println("Erro ao Gravar Comissão: "+e.getMessage());
		}

1 Resposta

alexfe

Esse erro geralmente dá quando vc tenta inserir um objeto filho que depende de um pai, mas o pai ainda não foi persistido. Com isso não existem referencia em primary key.

Criado 18 de novembro de 2014
Ultima resposta 19 de nov. de 2014
Respostas 1
Participantes 2