2012-11-12 19 views
6

Sto usando Ebean e devo finire per ottenere "on delete cascade" come DDL (data definition language) - quale annotazione fa? Ho provatoGenera "on delete cascade" usando Ebean

ma che dà "il delete limitare"/non cambia il valore di default "su Elimina limitare"?

risposta

1

Prova questo

@OneToMany(mappedBy = "parent", cascade = javax.persistence.CascadeType.REMOVE) 
@Cascade(org.hibernate.annotations.CascadeType.DELETE_ORPHAN) 
0

È necessario utilizzare il @OnDelete annotazioni sulla classe genitore in modo che Hibernate per generare nel DDL (@OnDelete(action = OnDeleteAction.CASCADE))

Ad esempio:

@Entity 
class Parent { 
    /* id and some attributes */ 

    @OneToMany(mappedBy = "parent", cascade = {CascadeType.REMOVE}) 
    @ForeignKey(name = "FK_CHILD_PARENT") 
    @OnDelete(action = OnDeleteAction.CASCADE) 
    List<Child> children; 
} 

@Entity 
class Child { 
    /* id and some attributes */ 

    Parent parent; 
} 
0

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.

Problemi correlati