• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 Spring 게시판 일대다 다대일 관계 테이블 참조 관계 끊는 방법

일대다 다대일 관계 테이블 참조 관계 끊는 방법

  • 이 주제에는 4개 답변, 2명 참여가 있으며 조우석4 월 전에 전에 마지막으로 업데이트했습니다.
5 글 보임 - 1 에서 5 까지 (총 5 중에서)
  • 글쓴이
  • #136312

    조우석
    참가자
    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "product_id", nullable = false)
    private Product product;
    -----------------------------------------------------------------------------------------------------
    @OneToMany(mappedBy = "product", cascade = CascadeType.ALL, orphanRemoval = true)
    private List<ProductImage> productImages = new ArrayList<>();
    -------------------------------------------------------------------------------------------------------
    public void deleteProduct(Long productId){
        Product deleteItem = productRepository.findById(productId)
                .orElseThrow(() -> new IllegalArgumentException("상품을 찾을 수 없습니다. ID: " + productId));
        productRepository.deleteById(productId);
    }
    이런식으로 상품과 상품 이미지 의 관계에서  cascade = CascadeType.ALL, orphanRemoval = true 이거 사용하면 다 삭제된다고 하는데
    java.sql.SQLIntegrityConstraintViolationException: Cannot delete or update a parent row: a foreign key constraint fails (`mysql-cartreverse`.`product_image`, CONSTRAINT `FK1n91c4vdhw8pa4frngs4qbbvs` FOREIGN KEY (`product_id`) REFERENCES `products` (`product_id`))
    이런 오류가 계속 발생해서 어떻게 해야할지 막혔습니다.. 도와주세요...
     
    #136316

    codingapple
    키 마스터
    productId 지우기 전에 그걸 쓰는 productImages 행도 다 제거부터하면 될수도요 
    아니면 @JoinColumn() 안에 foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT) 집어넣으면 foreign key 제약 안넣어줍니다
    #136352

    조우석
    참가자
    @Transactional 어노테이션을 클래스 위에서 선언해줬는데, 그게 삭제 메서드에 통하지 않았나 봅니다.. 삭제 메서드 위로 올려주니
    바로 삭제가 되더군요. 혹시 왜그런지 설명해주시면 감사하겠습니다.
    #136361

    codingapple
    키 마스터
    @Transactional 위치바꾼다고 저기선 크게 달라지는건 없을걸요 아마 다른게 문제일 수도요
    #136490

    조우석
    참가자
    다른거 바꾼건 없고 @Transactional 위치만 바꿨는데 해결이 되길래 그거때문인줄 알았네요.. 일단 되니까 더 건드리진 않았습니다. 감사합니다
5 글 보임 - 1 에서 5 까지 (총 5 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠