Persistir objeto e alterar outro com Hibernate

Java

16/09/2011

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

Wisley Souza

Curtidas 0

Respostas

Wisley Souza

Wisley Souza

16/09/2011

ninguém???
GOSTEI 0
Davi Costa

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
GOSTEI 0
Wisley Souza

Wisley Souza

16/09/2011

já estou fazendo isso:

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

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

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

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

Dyego Carmo

16/09/2011

Deu certo ?
Se funcionou... poderia fechar o chamado ?

Valeu !
GOSTEI 0
POSTAR