Re:one-to-one jpa inserir uma tabela e atualizar a outra

2 respostas
B

Hum…Este erro pode estar ocorrendo pq vc está persistindo a entidade Boleto com um relacionamento Agenda que nao é gerenciavel(pelo
fato de vc estar utilizando o mappedBy=boleto)…

2 Respostas

Scoobydoo

EU estava com o mesmo problema a um tempo atraz... da uma olhada no que eu fiz.

ANTES (cod. botao)
daoVenda.salvarVenda(venda);//
int linhas = dtmitens.getRowCount();
VendaProduto vendaProduto = new VendaProduto();//
        for (int i = 0; i < linhas; i++) {
            int codigoProduto = Integer.parseInt(String.valueOf(dtmitens.getValueAt(i,0)));
            Produto produto = daoProduto.buscaPorCodigo(codigoProduto);
            vendaProduto.setProduto(produto);
            vendaProduto.setPrecoTotal(Float.parseFloat(String.valueOf(dtmitens.getValueAt(i,5))));
            vendaProduto.setPrecoUnitario(Float.parseFloat(String.valueOf(dtmitens.getValueAt(i,4))));
            vendaProduto.setQuantidade(Integer.parseInt(String.valueOf(dtmitens.getValueAt(i,2))));
            vendaProduto.setVenda(venda);
            daoVendaProduto.salvarVendaProduto(vendaProduto);//
        }
DEPOIS Metodo
public void addVendaProduto(VendaProduto vendaProduto){   
        if(this.vendaProdutoCollection == null){   
            this.vendaProdutoCollection = new ArrayList<VendaProduto>();   
        }   
        this.vendaProdutoCollection.add(vendaProduto);   
    }  
public void addVendaProduto(VendaProduto vendaProduto){
        if(this.vendaProdutoCollection == null){
            this.vendaProdutoCollection = new ArrayList<VendaProduto>();
        }
        this.vendaProdutoCollection.add(vendaProduto);
    }
e o Cod.Botao
int linhas = dtmitens.getRowCount();   
        for (int i = 0; i < linhas; i++) {   
            VendaProduto vendaProduto = new VendaProduto();//motivo do problema... ¬¬   
            int codigoProduto = Integer.parseInt(String.valueOf(dtmitens.getValueAt(i,0)));   
            Produto produto = daoProduto.buscaPorCodigo(codigoProduto);   
            vendaProduto.setProduto(produto);   
            vendaProduto.setPrecoTotal(Float.parseFloat(String.valueOf(dtmitens.getValueAt(i,5))));   
            vendaProduto.setPrecoUnitario(Float.parseFloat(String.valueOf(dtmitens.getValueAt(i,4))));   
            vendaProduto.setQuantidade(Integer.parseInt(String.valueOf(dtmitens.getValueAt(i,2))));   
            vendaProduto.setVenda(venda);   
            venda.addVendaProduto(vendaProduto);//   
        }   
        daoVenda.salvarVenda(venda);//

Talvez ajude
vlw

I

Tenho um relacionamento One-to-One bidirecional entra a tabela A e B.

A tabela B ja contem campos existentes agora eu gostaria de inserir dados na tabela A e atualizar uma tupla da tabela B. Tem que colocar algo

Classe A
        
        @OneToOne(cascade = CascadeType.ALL , fetch = FetchType.LAZY, mappedBy = "boleto")
	@JoinColumn(name="id")
	private Agencia agencia ;
	
	
        Classe B
        @OneToOne(fetch=FetchType.LAZY)
	@JoinColumn(name="id_boleto")
	private Boleto boleto ;
Agencia agencia = service_.findAgencia("aqui eu passo o id"); // retorna o objeto ja carregado no banco
					
	Boleto boleto = new Boleto();
						
        boleto.setInst1( txtInst1.getText() );
        boleto.setInst2( txtInst2.getText() );
	boleto.setInst3( txtInst3.getText() );
	boleto.setDiaVencimento( Integer.parseInt( txtDtVencimento.getText() ) );
	boleto.setLocalPagamento( txtLocalPagamento.getText() );
	boleto.setLocalPagamento2( txtPagVencimento.getText() );
	boleto.setValorBoleto( txtValor.getText() );
						
	boleto.setAgencia(agencia);
											
	agencia.setBoleto(boleto);

        service.salvar(boleto); // inserir o objeto boleto e fazer atualizacao da chave estrangeira(id_boleto) que esta no objeto agencia referenciando o id da tabela boleto

Esta dando um erro “detached entity passed to persist”. :frowning:

Agradeço a quem ajudar

Criado 19 de janeiro de 2010
Ultima resposta 19 de jan. de 2010
Respostas 2
Participantes 3