Siempre he hecho la configuración usando anotaciones en la propia clase (@Algo), y nunca había tenido problemas con los borrados en cascada. Por ejemplo con:
Código PHP:
@OneToMany(cascade=CascadeType.REMOVE)
, realizaba el borrado en cascada. Lo que no estoy seguro es si por defecto en un many to many realiza el borrado en cascada por defecto si no se pone ninguna anotación.