Hibernate Relações Many-To-Many, Many-To-One com detached Objects

0 respostas
spaethinho

Tudo bom pessoal,

Estou batendo a cabeça um tempo aqui com um pequeno problema.

Tenho três entidades: Order, User, ProductRelease

A entidade Order tem uma propriedade User que é anotada conforme segue:

@ManyToOne private User user;
e tem uma propriedade orderedItems que é anotada da seguinte forma:

@ManyToMany(fetch = FetchType.EAGER) @Cascade({ org.hibernate.annotations.CascadeType.DELETE_ORPHAN, org.hibernate.annotations.CascadeType.ALL }) @JoinTable(joinColumns = { @JoinColumn(name = "ProductRelease_date", referencedColumnName = "date"), @JoinColumn(name = "ProductRelease_product_id", referencedColumnName = "product_id") }) private List<ProductRelease> orderItems;
Na aplicação crio um objeto order e armazeno-o na HTTP-Session, após o usuário confirmar o checkout faço a gravação do objeto utilizando GenericDao.save() (que basicamente faz save para novas entidades e update para as quais já existem).

O fato é que quando persisto o Order object, ele faz um cascade e tenta salvar o usuário e os orderItems, mas não quero isso.

Se remover o cascade da propriedade orderItems ele não salvará as relações na tabela associativa de Order para ProductRelease, existe uma forma de fazer com que ele salve as associações mas sem cascatear a persistencia para os objetos contidos em orderItems? Uma vez que cascateando e sendo que os objetos estão desatachados ele falará que já existe um objeto com o mesmo id na Hibernate Session.

A mesma coisa gostaria de aplicar para o usuário, somente utilizar o id sem cascatear a persistência.

Detalhe: as duas relações são unidirecionais.

Agradeço se puderem dar sugestões para resolver o problema

Obrigado
Francisco

Criado 27 de março de 2011
Respostas 0
Participantes 1