경주장

JPA 외래키 매핑 문제 해결 본문

프로젝트/자바지기

JPA 외래키 매핑 문제 해결

달리는치타 2022. 1. 13. 21:37

게시판 프로젝트를 진행함에 있어

도메인 모델

 

이런 모델에 대한 엔티티 설계로 

 

대충 이런 참조 모델이 나왔고 

테이블도 아주 잘 나왔다!

 

근데 댓글 추가가 안되서 살펴보니

    alter table comment 
       add constraint FKs1slvnkuemjsq2kj4h3vhx7i1 
       foreign key (post_id) 
       references post (post_id)
Hibernate: 
    
    alter table comment 
       add constraint FKp41h5al2ajp1q0u6ox3i68w61 
       foreign key (account_id) 
       references account (account_id)
Hibernate: 
    
    alter table comment 
       add constraint FKgcjcve80iene8gnyxyk2p2vax 
       foreign key (comment_id) 
       references post (post_id)
Hibernate: 
    
    alter table post 
       add constraint FKe5hjewhnd6trrdgt8i6uapkhy 
       foreign key (account_id) 
       references account (account_id)

외래키 참조가 이렇게 4개 추가되었는데 범인은 3번째 제약조건이다...

댓글의 아이디가 게시글의 아이디를 참조하도록 되어있다.

 

이유를 찾아보니 실수로 

Post에서 Comment를 참조할때

 

@OneToMany
@JoinColumn(name="comment_id")

어노테이션을 주고 있었다.

Post와 Comment가 서로가 연관관계의 주인이라고 주장하며 제약을 걸었던 것이다...

 

아래와 같이 변경하여 해결 하였다.

@OneToMany(mappedBy = "post")