Playframework 播放-ebean级联删除选项
我正在开发一个网站,它有相当多的多对多的关系。这意味着,通常当我删除某个内容时,它可能会连接到大量其他内容,这将导致删除太多的内容。在这方面,我想问你几件事:Playframework 播放-ebean级联删除选项,playframework,cascade,ebean,cascading-deletes,Playframework,Cascade,Ebean,Cascading Deletes,我正在开发一个网站,它有相当多的多对多的关系。这意味着,通常当我删除某个内容时,它可能会连接到大量其他内容,这将导致删除太多的内容。在这方面,我想问你几件事: 什么是级联选项以及如何禁用级联删除 假设我们有以下情况: 课堂任务: @Entity public class Task extends Model { @Id public Long id; @Required public String label; @ManyToMany p
@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();
}
}
@实体
公共类任务扩展模型{
@身份证
公共长id;
@必需的
公共字符串标签;
@许多
public List users=new ArrayList();
public void addUser(用户){
用户。添加(用户);
}
公共静态列表所有(){
返回find.all();
}
公共静态查找器find=新查找器(
长类,任务类
);
公共静态无效创建(任务){
task.save();
}
公共静态无效删除(长id){
find.ref(id.delete();
}
}
类用户:
@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);
}
}
@实体
@表(name=“Users”)
公共类用户扩展模型{
@身份证
公共长id;
@必需的
公共字符串名称;
@许多
public List tasks=new ArrayList();
公共静态列表所有(){
返回find.all();
}
公共静态查找器find=新查找器(
Long.class,User.class
);
公共静态无效创建(用户){
user.save();
}
公共静态无效删除(长id){
find.ref(id.delete();
}
公共无效添加任务(任务任务){
任务。添加(任务);
}
}
正如您所看到的,任务有许多用户,用户有许多任务。删除对象时,我不仅要删除对象本身,还要删除其他对象对该对象的引用。比如说:
用户John有三个任务要做:A、B和C
任务A、B和C也分配给其他用户。
我想删除John并删除John对A、B和C的数据库引用。
我不想删除A、B和C任务,因为它们仍在使用中
在这种情况下,我应该使用什么级联选项 找到了答案!似乎数据库术语中的级联删除和框架中的级联删除不是一回事。cascade=CascadeType.ALL删除对象以及该对象对其他对象的引用。但是,它不会删除其他对象 谢谢你,我辉煌的自我