Persistir objeto e alterar outro com Hibernate
Fala moçada me pintou um duvida com persistência no hibernate
eu tenho o objeto carga e o objeto invoice, um objeto carga e composto por uma ou varias invoice, e uma invoice pertece em determinado tempo a uma carga, meu problema é que eu crio a invoice antes de criar a carga, em um processo bem anterior, e só depois no momento de consolidar a carga é que crio o obejto carga para persistir...
se os dois fossem criado no mesmo momento eu faria assim
Bom, isso funcionaria perfeitamente se eu fosse cria os objetos no mesmo tempo persistindo assim:
alguma solucao para isso?
eu tenho o objeto carga e o objeto invoice, um objeto carga e composto por uma ou varias invoice, e uma invoice pertece em determinado tempo a uma carga, meu problema é que eu crio a invoice antes de criar a carga, em um processo bem anterior, e só depois no momento de consolidar a carga é que crio o obejto carga para persistir...
se os dois fossem criado no mesmo momento eu faria assim
class invoice{//...
@JoinColumn(name = "CARGA_ID", nullable = true) @ManyToOne(fetch = FetchType.LAZY) @Label("lblCarga") private Carga carga;
}
class Carga{ //... @OneToMany(mappedBy = "carga", fetch = FetchType.LAZY) @Cascade(value={CascadeType.ALL,CascadeType.DELETE_ORPHAN}) @OnDelete(action=OnDeleteAction.CASCADE) private List<Invoice> invoice;}
Bom, isso funcionaria perfeitamente se eu fosse cria os objetos no mesmo tempo persistindo assim:
class persitir{
void inicializar(){carga = new Carga();carga.setInvoice(new ArrayList<Invoice>());}
//meu problemapublic String salvar(){
try{ //ele tenta salvar novas invoices e dar pau pq as invoices que seleciono já estão persistidas cadastrarFacade.salvarCarga(this.carga) }catch(exception e){ e.pri... return null;
}
return Constantes.SALVAR;}
}
alguma solucao para isso?
Wisley Souza
Curtidas 0
Respostas
Wisley Souza
16/09/2011
ninguém???
GOSTEI 0
Davi Costa
16/09/2011
Acho que se vc inserir a carga e em um segundo momento, logo em seguida atualiza com a carga com as invoice.
A não ser que vc alterasse seu modelo e mantenha esse relacionameto em uma tabela a parte.
att Davi
A não ser que vc alterasse seu modelo e mantenha esse relacionameto em uma tabela a parte.
att Davi
GOSTEI 0
Wisley Souza
16/09/2011
já estou fazendo isso:
mas não acho isso pratico, estou desmembrando a parada que faz parte uma da outra;
algum solução mais elegante ou inteligente?
facadeSalavar(carga)
for(Invoice item : lista){ item.setCarga(thisCarga); facadeAlterarInvoice(item);}
mas não acho isso pratico, estou desmembrando a parada que faz parte uma da outra;
algum solução mais elegante ou inteligente?
GOSTEI 0
Luciano Martins
16/09/2011
qual a sua necessidade do objeto INVOICE precisar saber do objeto CARGA? pq pensei no seguinte de usar o relacionamento unidimensional ou seja, só o objeto CARGA terá referências do INVOICE, daí o resto é contigo...pense nisso!!
GOSTEI 0
Wisley Souza
16/09/2011
uma carga tem uma ou muitas invoices, entendeu? por isso a relação deve ficar em invoice... pelo jeito e uma batalha perdida ehhe
GOSTEI 0
Luciano Martins
16/09/2011
td bem, mas INVOICE num tem nada pra saber da CARGA saka? por isso fosse vc mudaria pra relacionamento UNIDIMENSIONAL, seilá!!
GOSTEI 0
Dyego Carmo
16/09/2011
Deu certo ?
Se funcionou... poderia fechar o chamado ?
Valeu !
Se funcionou... poderia fechar o chamado ?
Valeu !
GOSTEI 0