Cascading from client to product seems to be ok for me. When a client is deleted, the products are useless. Only cascading from shop to product makes no sense for me.
I suppose you have to specify cascading on the products collection in client and on the many-to-xxx mapping to shop in product (if you have that one).
What mappings do you have ?
collection from client to product (maybe with inverse=true)
many-to-xxx from product to client
collection from shop to product (maybe with inverse=true)
many-to-xxx from product to shop
If you only have the collection mappings, I think there is no way for hibernate to cascade from client to product to shop. So when you delete the client the products will be deleted due to cascading and then re-added from shop because they are still in that collection.
I haven't used cascading in such a scenario, yet, so me ideas are base on theory. I hope they are correct ;-) ...