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<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
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”.
Agradeço a quem ajudar