I use grails 2.0.0. I have three objects Member, Product and ProductType. Member has many Products and is a one-to-many relation. Product points to ProductType (reference table) and is a many-to-one relation. My question is about deleting Products. It works in one scenario and not in another. Read on.

The domain does implement Seriealizable, did not paste it for simplicity. The equals and hashCode methods are also in place. Even with all this, it does not work. As soon as I switch back to using a non-composite primary key for Product class it works...
–
arrehmanJan 21 '14 at 16:35

Domain classes mapped with composite primary keys must implement the Serializable interface and override the equals() and hashCode() methods, using the properties in the composite key for the calculations.

You also need to be aware of using composite primary keys is associations, especially the mapped column names.

May be, it is not that good using a many-to-one mapped type in a composite key.