[에러] 테이블 연관관계 설정 문제

myeonji·2022년 5월 3일
0

@JoinTable을 사용한 단방향 @OneToMany 단방향 문제점

(@OneToMany 단방향에서 따로 조인 설정을 넣지 않으면 단방향 @JoinTable이 적용)

@Data
@Entity
@AllArgsConstructor
@NoArgsConstructor
@Table(name = "userInfo")
public class UserInfo {

    @Id  // Primary key
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @OneToMany(cascade = CascadeType.ALL)
    private List<Portfolio> portfolios_id;
}
@Data
@Entity
@AllArgsConstructor
@NoArgsConstructor
@Table(name = "portfolio")
public class Portfolio {

    @Id  // Primary key
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String title;
}

별도 테이블 생성


@JoinColumn을 사용한 단방향 @OneToMany

many쪽에 join칼럼 추가됨 -> one에서 @JoinColumn을 넣어도 컬럼은 many에 추가됨 -> 외래키가 다른 테이블에 생성됨 -> update 쿼리가 추가적으로 발생

@Data
@Entity
@AllArgsConstructor
@NoArgsConstructor
@Table(name = "userInfo")
public class UserInfo {

    @Id  // Primary key
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    @OneToMany(cascade = CascadeType.ALL)
    @JoinColumn(name = "info_id")
    private List<Portfolio> portfolios;
}


@OneToMany @ManyToOne 양방향

userInfo_id 컬럼이 Portfolio 테이블(Many쪽)에 들어있어야 함.
UserInfo 테이블에 portfolio_id 컬럼이 있을 수 없음 -> 데이터 하나씩만 insert 가능하기 때문

따라서 필요없어진 UserInfo 테이블을 지우고 User 테이블과 Portfolio 테이블을 양방향으로 매핑하는 방법 선택!

0개의 댓글