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

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)…

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

ANTES (cod. botao)

[code]

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);//
}
[/code]

DEPOIS Metodo

public void addVendaProduto(VendaProduto vendaProduto){ if(this.vendaProdutoCollection == null){ this.vendaProdutoCollection = new ArrayList&lt;VendaProduto&gt;(); } this.vendaProdutoCollection.add(vendaProduto); } public void addVendaProduto(VendaProduto vendaProduto){ if(this.vendaProdutoCollection == null){ this.vendaProdutoCollection = new ArrayList&lt;VendaProduto&gt;(); } this.vendaProdutoCollection.add(vendaProduto); }
e o Cod.Botao

int linhas = dtmitens.getRowCount();   
        for (int i = 0; i &lt; 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

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