Sebbene sia stato richiesto "on delete cascade" come DDL, la mia risposta copre il livello del software. EBean non sembra generare cascate di livello DB. Invece, gestisce l'operazione a cascata nel software. Penso che sia una buona alternativa.
Vedi questo da (avaje-ebeanorm-4.6.2.jar: com/avaje/ebeaninternal/server/persistere/DefaultPersister)
/**
* Delete the bean.
* <p>
* Note that preDelete fires before the deletion of children.
* </p>
*/
private void delete(PersistRequestBean<?> request) {
DeleteUnloadedForeignKeys unloadedForeignKeys = null;
if (request.isPersistCascade()) {
// delete children first ... register the
// bean to handle bi-directional cascading
request.registerDeleteBean();
deleteAssocMany(request);
request.unregisterDeleteBean();
...
Si può vedere che se la richiesta è un a cascata, quindi prima i suoi figli vengono cancellati (probabilmente questo è in qualche modo ricorsivo).
Nel mio DB Postgre, i vincoli di chiave esterna generati automaticamente non contengono cascate, ma le operazioni di eliminazione sono comunque in cascata.