No, there isn't because cascade options are about what the database does, not what your
Java objects do. That is in code and in your code.
That is why they say things like if you add a reference to an object on one side, you are responsible for setting it back the other side if it is a bi-directional mapping.
It sounds like your first option is what you want in the database. For the Java side, you will need to write code that will basically loop through that objects parent tags, and get the child tags from each individual parent's child collection and remove the child that you are about to delete.
Mark