@OneToMany(() => BEntity, (b) => b.a)
arrayB: BEntity[];
AEntity에 arrayB라는 BEntity 배열을 선언한다.
a - b 은 1:N 관계,
그리고 OneToMany 데코레이터를 이용해 릴레이션을 맺는다.
(b) => b.a
는 a가 BEntity에서 참조하는 컬럼을 지정한 것.
@ManyToOne(() => AEntity)
@JoinColumn({ name: 'a', referencedColumnName: 'name' })
a: AEntity;
반대로 b - a 는 N:1으로 ManyToOne으로 지정한다.
@JoinColumn
데코레이터의 경우 BEntity를 가져와 참조할 때, a table을 JOIN해서 가져오기 때문에 선언해줬다.
name
을 통해 가져올 때 a
라는 컬럼 이름으로 가져오는 것,
referencedColumnName
을 통해 a에서 name
컬럼을 가져오는 것을 설정한다.
기존에 릴레이션이 없는 상황에서 Query를 작성할 때,
테이블 b에 테이블 a를 LEFT JOIN 한 결과에서 처리하는 로직을 수행했다. 이제 테이블 b에서 SELECT만 사용해도, JOIN한 테이블에서 결과를 가져온다.