@Many-to-Many
- 데이터베이스에서 두 엔터티가 서로 다수의 관계를 가질 수 있는 경우를 의미한다.
- 예를 들어, 학생과 강좌의 관계는 다대다 관계이다. 한 학생은 여러 강좌를 수강할 수 있고, 한 강좌도 여러 학생이 수강할 수 있다.
- Many-to-Many 관계를 설정하려면 @ManyToMany 어노테이션을 사용하고, 중간 테이블을 명시하기 위해 @JoinTable 어노테이션을 사용한다.
import { Entity, PrimaryGeneratedColumn, Column, ManyToMany, JoinTable } from 'typeorm';
import { Course } from './Course';
@Entity()
export class Student {
@PrimaryGeneratedColumn()
id: number;
@Column()
name: string;
@ManyToMany(() => Course, course => course.students)
@JoinTable({
name: 'student_course',
joinColumns: [
{ name: 'student_id' }
],
inverseJoinColumns: [
{ name: 'course_id' }
]
})
courses: Course[];
}
- JoinTable은 소유하고 있는 쪽의 relation에 추가하면 된다.
- @JoinTable(): 다대다 관계에서 조인 테이블을 명시한다. 조인 테이블의 이름과 조인 칼럼들을 정의할 수 있다.
import { Entity, PrimaryGeneratedColumn, Column, ManyToMany } from 'typeorm';
import { Student } from './Student';
@Entity()
export class Course {
@PrimaryGeneratedColumn()
id: number;
@Column()
name: string;
@ManyToMany(() => Student, student => student.courses)
students: Student[];
}
'Database > TypeORM' 카테고리의 다른 글
Find OPtions(LessThan, MoreThan … ) , 데이터를 조회할 때 사용되는 옵션 (0) | 2024.08.27 |
---|---|
@RelationId, 특정 필드에 대한 외래 키 값만 가져오기 (0) | 2024.08.02 |
Column 타입 JSON으로 지정, @Column({ type: "json" }) (0) | 2024.08.02 |
Relations 정리 One-to-One, @JoinColumn() (0) | 2024.08.02 |
Relations 정리 OneToMany, ManyToOne (0) | 2024.08.02 |