我正在开发一个网站,它有很多很多关系。这意味着通常当我删除某些东西时,它可能会连接到大量其他东西,这将导致删除太多的东西。在这方面,我想问你一些事情:
CLASS TASK:
@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任务。
我在这种情况下使用哪些级联选项?
答案 0 :(得分:2)
找到答案!似乎数据库术语和框架中的级联删除不是一回事。 cascade = CascadeType.ALL将对象和该对象的引用删除给其他人。但是,它不会删除其他对象。
谢谢你我的光辉。