Для hibernate, REMOVE и DELETE означают одно и то же, проверьте. AnnotationBinder # getCascadeStrategy ()
while ( cascadeType.hasNext() ) {
switch ( cascadeType.next() ) {
case ALL:
cascade.append( "," ).append( "all" );
break;
case SAVE_UPDATE:
cascade.append( "," ).append( "save-update" );
break;
case PERSIST:
cascade.append( "," ).append( "persist" );
break;
case MERGE:
cascade.append( "," ).append( "merge" );
break;
case LOCK:
cascade.append( "," ).append( "lock" );
break;
case REFRESH:
cascade.append( "," ).append( "refresh" );
break;
case REPLICATE:
cascade.append( "," ).append( "replicate" );
break;
case EVICT:
cascade.append( "," ).append( "evict" );
break;
case DELETE:
cascade.append( "," ).append( "delete" );
break;
case DELETE_ORPHAN:
cascade.append( "," ).append( "delete-orphan" );
break;
case REMOVE:
cascade.append( "," ).append( "delete" );
break;
}
}
Так что для Хиберанте нет разницы между УДАЛИТЬ или УДАЛИТЬ, это одно и то же! Поскольку JPA, hibernate, не соблюдает аннотацию CascadeType.DELETE для дочерних элементов, может быть той же причиной, они также игнорируются для CascadeType.REMOVE.
Попробуйте с CascasdeType.REFRESH, если это поможет (только предположение)