2014-02-25 87 views
0

我正在開發一個網站,它有很多關係很多。這意味着通常當我刪除某些東西時,它可能會與其他大量東西相關聯,從而導致刪除太多東西。在這方面,我想問你幾件事:播放 - ebean級聯刪除選項

  1. 什麼是級聯選項以及如何禁用級聯刪除。
  2. 比方說,我們有下面的情況:

類任務:

@Entity 
public class Task extends Model { 

    @Id 
    public Long id; 

    @Required 
    public String label; 


    @ManyToMany 
    public List<User> users = new ArrayList(); 

    public void addUser(User user){ 

      users.add(user); 

    } 

    public static List<Task> all(){ 

     return find.all(); 
    } 

    public static Finder<Long,Task> find = new Finder(

     Long.class, Task.class 

    ); 


    public static void create (Task task){ 

     task.save(); 
    } 

    public static void delete (Long id){ 

     find.ref(id).delete(); 

    } 

} 

CLASS USER:

@Entity 
@Table(name="Users") 

public class User extends Model { 



    @Id 
    public Long id; 

    @Required 
    public String Name; 



    @ManyToMany 
    public List<Task> tasks = new ArrayList(); 


    public static List<User> all(){ 

     return find.all(); 
    } 

    public static Finder<Long,User> find = new Finder(

     Long.class, User.class 

    ); 


    public static void create (User user){ 

     user.save(); 
    } 

    public static void delete (Long id){ 

     find.ref(id).delete(); 

    } 

    public void addTask(Task task){ 

     tasks.add(task); 

    } 
} 

正如你所看到的任務有很多用戶和用戶之間有很多任務。當我刪除一個對象時,我不僅要刪除對象本身,還要刪除其他對象對這個對象的引用。舉例來說:

用戶John有三個任務要做:A,B和C 任務A,B和C也分配給其他用戶。 我想刪除John並將John的數據庫引用刪除到A,B和C. 我不想刪除A,B和C任務,因爲它們仍在使用中。

我在這種情況下使用了哪些級聯選項?

回答

2

找到答案!數據庫術語和框架中的級聯刪除看起來並不是一回事。級聯= CascadeType.ALL將該對象和該對象的引用刪除給其他人。但是,它不會刪除其他對象。

謝謝你,我的輝煌的自我。