[TIL] 23.01.18 Prouduct 와 Seller 연관관계

hyewon jeong·2023년 1월 18일
0

TIL

목록 보기
72/138

개발 진행에 따른 기록 작성(★★★★★)

1. Prouduct 와 Seller 연관관계

  1. 어떠한 이유로 해당 기능을 사용하였는지
    프로덕트를 등록하거나 CRUD 기능 에서 판매자의 id가 필요하여
    @ManyToOne 으로 단방향 연관관계를 맺어줬다.
  1. 해당 기능의 코드는 어떠한 로직을 가지고 있는지
    ※ 입력값이 들어가면 어떠한 코드를 통해 어떠한 값으로 변화하는지
  1. 코드를 작성하며 발견된 버그오류는 어떠한게 있었는지 그리고 어떻게 해결하였는지.
  • 모든 오류의 가장 큰 원인은 연관관계에 대해 얕게 알고 사용해서 나는 것이었다.

😒1차 오류❔

@Getter
@Entity
@NoArgsConstructor
public class Product {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;


    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "user_id") //판매자 ID (FK)
     private Long userId;

판매자Id 를 조인하고 싶어 이렇게 로직은 짰으나 Long 에 빨간표시가 되며 에러발생
연관관계 매핑할때
멤버변수는 조인하고 싶은 객체를 조인해야 한다!( userId가 아닌 user)

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "user_id") //판매자 ID (FK)
     private User user;

😒2차 오류❔

변경하면 빨간 표시는 없으나 H2 DB상에서 User 값이 들어오지 않았다.
그래서 면밀히 다시 보니 ,,,, 생성자에 User를 넣지 않아 값을 받아오지 못하고 있었다.

@Getter
@Entity
@NoArgsConstructor
public class Product {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;


    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "seller_id") //판매자 ID (FK)
     private User user;
     ....
     
    public Product(ProductRequest request, User user) {
        this.user = user;
        this.productName = request.getProductName();
        this.productPrice = request.getProductPrice();
        this.productQuantity = request.getQuantity();
        this.productImage = request.getProductImage();
        this.productDetail = request.getProductDetail();
        this.productCategory= request.getProductCategory();
    }

😁에러 해결 !

하지만 막상 User로 만들긴 했지만 내 로직에서는 User를 받아오지 않더라도 UserDetail에서 UserId를 가져오고, SellerId 만 필요하기 때문에 굳이 User를 가져올 필요성을 느끼지 못했다.

그래서

😘 3차 시도

profile
개발자꿈나무

0개의 댓글