Hi Aldo,

RequestFactory doesn't support composite keys, only String or Long
types. In order to simulate @ManyToMany, your intersection table
should have a String or Long id, product, and item as fields of the
entity itself rather than an embedded PK class as shown.

HTH,
/dmc

On Jan 6, 6:23 pm, Y2i <[email protected]> wrote:
> 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