본문 바로가기

Backend/PostgreSQL and TypeORM

relation 그리고 연관관계 잡기

내가 현재 기준점을 잡은 entity의 이름을 A라고 하자. 

A와 B entity는 서로 일대일 관계이고, B와 C는 일대다 관계였다. 

 

이런 상황에서 A->C로 바로 참조할 수 있는 방법이 있나?라고 고민하던 중에 내가 처음으로 시도하던 방법은 relation에 2개의 테이블 이름을 넣는 것이었다. 

 

const result = await this.memberRepository.find({ 
    relations: ['B','C'], 
});

결과값이 원하는 대로 나오긴 했지만, 이는 올바른 방법이 아니다. 왜일까? 

 

만약 A에서 중구난방으로 떨어진 테이블을 참조하려고 하면 그 관계가 끝도 없이 파야 나올텐데, 내가 했던 방법은 올바르지 않은 것이다. 

이럴 때에는 참조하는 테이블을 잘 명시해주어야 한다. 

수정한 내용은 다음과 같다.

 

const result = await this.memberRepository.find({ 
    relations: ['B.B에서 C테이블을 참조하고 있는(OneToMany관계) 엔티티 변수 이름'],
});