Я разрабатываю веб-сайт, и у него довольно много отношений. Это означает, что обычно, когда я удаляю что-то, это может быть связано с множеством других вещей, что приведет к удалению слишком многих вещей. В этом отношении я хотел бы задать вам несколько вопросов:Play - ebean cascade delete options
- Каковы варианты каскада и как отключить каскадное удаление.
- Допустим, у нас есть следующий случай:
КЛАСС ЗАДАЧА:
@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, поскольку они все еще используются.
Какие каскадные варианты я использую для этого случая?