Programming

    [Debug]장바구니 Delete하는 과정에서 생긴 오류, SQLException처리, native Query문 작성 후 delete 성공[DELETE FROM ? WHERE ? AND ? 문 사용]

    문제점이 두 가지인데 1. 첫 번째로는 저렇게 bucket에 bucketId를 잡고 지워버리면 아래처럼 싹 다 지워버립니다. 이렇게 하면 위처럼 (여기서 id는 BucketProducts table의 프라이머리 키인데) 이 프라이머리 id 값이 아래에 둘 다 들어가집니다. delete from bucket_products where id =? delefe from product where id =? 이렇게 둘 다 들어가면 문제가 뭐냐면 상품도 같이 지워진다는 겁니다. 물론 외래 키를 product에 생성되지 않게 했지만, save 하는 과정에서 세션에 있는 user값이 외래 키가 되어서 들어가네요. 이 테이블이 user_id로 연결되어있는데, where id 조건을 만족시켜서 product를 지워버립니다..

    [Problem solving] 외래키를 설정해야하는데, row가 생겨버리는 문제해결[getById]

    이렇게 되어버리네요.. 아마 bucket.setProduct(product); 줄이 문제일 겁니다. bucket에 넣어 줘야 하는 값은 product의 id를 잡아서 가져와야 하는데 제가 setProduct를 해버려서 지금 bucket에 @RequestBody로 가져온 Product product가 자연스럽게 ProductRepository에 저장이 되어서 이것을 bucket에 넣어주나 봅니다. 그렇기 때문에 productEntity에서 가져와서 view에서 정보를 던져주나 봅니다. 이 문제를 해결하기 위해서는 Query문을 사용해서 SELECT를 해주어야 합니다. 아래에 한 줄을 추가해주니 bucket.setProduct(productRepository.getById(product.getId())); ..

    [Debug]JPA 영속성 오류, joinColumn값(@ManyToOne)에 cascade추가

    서브 쿼리를 구성을 해서 실행하던 도중 서브 쿼리 오류는 고쳤지만 아래와 같이 오류가 발생합니다. object references an unsaved transient instance - save the transient instance before flushing : com.cos.unishop.domain.bucket.BucketProducts.product -> com.cos.unishop.domain.product.Product 영속성 때문에 오류가 나타난다던데, join 하는 쪽에 cascade를 설정해주면 해결이 됩니다. cascade = cascadeType.All 문제없이 실행됩니다 Reference https://www.baeldung.com/jpa-cascade-types https:/..

    [Problem Solving]장바구니에 데이터 중복으로 들어가는 것 해결[장바구니 기능]

    기본적인 장바구니 틀은 만들었지만 DB에서 데이터가 중복되어 들어가는 것을 제가 직접 로직을 짜서 수정해봤습니다. Query문도 직접 짯는데요. 이 컨트롤러에서 요긴하게 쓰입니다.!! 이렇게 짜 보니 동일한 상품명을 가졌으면, DB에 들어가지 않아서 장바구니는 이전 DB 그대로 유지할 수 있게 됩니다. (주석에서 고뇌의 흔적이..) 문제 해결!