문제

웹 사이트를 개발하고 있으며 많은 관계에 꽤 많은 사람들이 있습니다. 이것은 일반적으로 뭔가를 삭제할 때 다른 것들을 삭제할 수있는 다른 것들을 삭제할 수 있습니다. 그 점에서 나는 당신에게 몇 가지를 물어보고 싶습니다 :

  1. 캐스케이드 옵션은 무엇이며 캐스케이드 삭제를 비활성화하는 방법입니다.
  2. 우리는 다음과 같은 경우를 얻었습니다.
  3. 클래스 작업 :

    @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은 객체와 해당 개체의 참조를 다른 객체에 삭제합니다.그러나 다른 객체는 삭제되지 않습니다.

내 똑똑한 자아를 고마워요.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top