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.
