Mặc dù bạn đã yêu cầu "xóa tầng thác" dưới dạng DDL, câu trả lời của tôi bao gồm cấp phần mềm. EBean dường như không tạo ra các cấp bậc DB. Thay vào đó, nó xử lý hoạt động xếp tầng trong phần mềm. Tôi nghĩ đó là một lựa chọn tốt.
Xem này từ (avaje-ebeanorm-4.6.2.jar: com/avaje/ebeaninternal/máy chủ/kéo dài/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();
...
Bạn có thể thấy rằng nếu yêu cầu là một cascade, sau đó đầu tiên con của nó bị xóa (có lẽ đây là bằng cách nào đó đệ quy).
Trong DB Postgre của tôi, các ràng buộc khóa ngoài được tạo tự động không chứa bất kỳ thác nào, nhưng vẫn hoạt động xóa được xếp chồng.