Sorry, I misunderstood the question.  You are trying emulate
@ManyToMany...



On Jan 6, 3:13 pm, Y2i <[email protected]> wrote:
> I don't see @ManyToMany attribute in the sample code.
>
> On Jan 6, 8:53 am, Aldo Neto <[email protected]> wrote:
>
>
>
>
>
>
>
> > Hi all,
>
> > I'm trying to create a Many-to-Many relationship and add a couple of fields
> > to it. I based my mapping on this 
> > post:http://sieze.wordpress.com/2009/09/04/mapping-a-many-to-many-join-tab...
> > (which
> > was very clear and helpful).
>
> > Summarizing the mapping on that blog (Product, Item and ProductItem), we'll
> > have the the code below. I reproduced that on my mapping and I was able to
> > add a Product X Item to it. However, when I try to add the same Item to a
> > second Product, I get the following error message:
>
> >     *Server Error: org.hibernate.NonUniqueObjectException: a different
> > object with the same identifier value was already associated with the
> > session*
>
> > The strange thing is that it works just fine when I try to add a second Item
> > to the same product (so Products may have several Items, but an Item cannot
> > belong to several Products).
>
> > I played a little bit with the annotations and either I keep getting this
> > error message or the ProductItem references on Product and Item are not
> > updated correctly.
>
> > Does anyone knows what I'm doing wrong here? I'm really running out of
> > ideas.
>
> > Thanks,
> > Aldo
>
> > @Entity
> > @Table(name = "item")public class Item {
>
> > ...
>
> >     /*
> >      * Here is the annotation to add in order to
> >      * Hibernate to automatically insert and update
> >      * ProducItems (if any)
> >      */
> >     @OneToMany(fetch = FetchType.LAZY, mappedBy = "pk.item", cascade =
> > {CascadeType.PERSIST, CascadeType.MERGE})
> >     @Cascade({org.hibernate.annotations.CascadeType.SAVE_UPDATE,
> > org.hibernate.annotations.CascadeType.DELETE_ORPHAN})
>
> > public List<ProductItem> getProductItems() { return this.productItems; }
>
> > }
>
> > @Entity
> > @Table(name = "product")public class Product {
>
> > ...
>
> >     /*
> >      * I just followed the same annotations on getProductItems()
> >      */
> >     @OneToMany(fetch = FetchType.LAZY, mappedBy = "pk.product",
> > cascade = {CascadeType.PERSIST, CascadeType.MERGE})
> >     @Cascade({org.hibernate.annotations.CascadeType.SAVE_UPDATE,
> > org.hibernate.annotations.CascadeType.DELETE_ORPHAN})
>
> > public List<ProductItem> getProductItems() {
>
> >         return this.productItems;
> >     }
>
> > }
>
> > @Entity
> > @Table(name = "product_item")
> > @AssociationOverrides({
> > @AssociationOverride(name = "pk.item", joinColumns = @JoinColumn(name
> > = "item_id")),
> > @AssociationOverride(name = "pk.product", joinColumns =
> > @JoinColumn(name = "product_id"))})public class ProductItem {
>
> > ...
>
> >     private ProductItemPk pk = new ProductItemPk();
>
> >     @EmbeddedId
> >     private ProductItemPk getPk() {
> >         return pk;
> >     }
>
> > }
>
> > @Embeddablepublic class ProductItemPk implements Serializable {
> >     private Item item;
> >     private Product product;
>
> > ...
>
> > }

-- 
You received this message because you are subscribed to the Google Groups 
"Google Web Toolkit" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/google-web-toolkit?hl=en.

Reply via email to