I don't see @ManyToMany attribute in the sample code. On Jan 6, 8:53 am, Aldo Neto <tumo...@gmail.com> 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 google-web-tool...@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.