본문 바로가기
Backend/TypeORM

Entity Embadding

by 찬찬2 2024. 6. 7.

 

import { Column, Entity, PrimaryGeneratedColumn } from "typeorm";

// Entity 간 중복되는 column 이 있을 경우 아래와 같이 @Entity 데코레이터가 없는 일반 class로 만들어 사용할 수 있다.
export class Name {
    @Column()
    first: string;

    @Column()
    last: string;
}

@Entity()
export class StudentModel {
    @PrimaryGeneratedColumn()
    id: number;
    
    // 아래와 같이 @Column 데코레이터의 메타데이터로 익명함수의 리턴값으로 
    // 공통으로 사용되는 column이 들어있는 class 를 반환해주면 된다.
    @Column(() => Name)
    name: Name;

    @Column()
    class: string;
}

@Entity()
export class TeacherModel {
    @PrimaryGeneratedColumn()
    id: number;

    @Column(() => Name)
    name: Name;
    
    @Column()
    salary: number;
}

댓글