My problem was caused by the fact that I used a NamedQuery
to delete the child.
@NamedQuery(name="Child.deleteById", query="Delete from Child child where child.m_id=:id")
This appears to circumvent the annotations I had set up and deleted the parent entity.
To solve this, I changed the delete service to simply use the EntityManager.remove()
at which point all the annotations worked.