If you have db cascades then
you should not use cascading in your annotations. Of course, you still need the annotations (or XML) to map the state/relationships to the correct db columns, etc. However, be warned that having db cascades enabled can sometimes throw a wrench in the JPA provider, since it is not expecting the records to be deleted underneath it. For example, it might be caching the deleted objects. You might want to consider:
a) making sure that you end the persistence context immediately after a delete, or ensuring that you do not reference the objects that are being deleted by the db cascades
b) evict the objects, that are delete cascaded in the db, from the second level cache using the JPA 2 Cache API
c) make sure that you are not concurrently doing anything else that might be using the deleted objects