재생 - Ebean 캐스케이드 삭제 옵션
-
21-12-2019 - |
문제
웹 사이트를 개발하고 있으며 많은 관계에 꽤 많은 사람들이 있습니다. 이것은 일반적으로 뭔가를 삭제할 때 다른 것들을 삭제할 수있는 다른 것들을 삭제할 수 있습니다. 그 점에서 나는 당신에게 몇 가지를 물어보고 싶습니다 :
- 캐스케이드 옵션은 무엇이며 캐스케이드 삭제를 비활성화하는 방법입니다.
- 우리는 다음과 같은 경우를 얻었습니다.
클래스 작업 :
@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();
}
}
.
클래스 사용자 :
@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 작업을 삭제하고 싶지 않습니다.
이 경우 캐스케이드 옵션을 사용합니까?
해결책
답변을 찾았습니다!데이터베이스 용어와 프레임 워크에서 캐스케이드 삭제가 동일한 것은 아닙니다.cascade= cascadetype.all은 객체와 해당 개체의 참조를 다른 객체에 삭제합니다.그러나 다른 객체는 삭제되지 않습니다.
내 똑똑한 자아를 고마워요.
제휴하지 않습니다 StackOverflow