【问题标题】:How to make OneToOne relationship optional for multiple inherited classes?如何使多个继承类的 OneToOne 关系可选?
【发布时间】:2021-12-10 13:46:40
【问题描述】:

假设我有一个由DogCat 继承的类Animal

export class Animal extends BaseEntity{
    @PrimaryGeneratedColumn()
    id:number;
}

@Entity()
export class Cat extends Animal{
   ...
}

@Entity()
export class Dog extends Animal{
   ...
}

现在,我想展示与它们的所有者的OneToOne 关系。

@Entity
export class Owner extends BaseEntity{
   ....
 
   @OneToOne()
   pet:???
}

Owner 是一个具有pet 属性的类,该属性可以是猫或狗。 如何使用 typeorm 实现这一点?


还是我做错了?

【问题讨论】:

    标签: typescript nestjs entity typeorm ts-node


    【解决方案1】:

    这是你的做法


    @Entity()
    @TableInheritance({ column: { type: "varchar", name: "type" } })
    export class Content {
        
        @PrimaryGeneratedColumn()
        id: number;
     
        @Column()
        title: string;
        
        @Column()
        description: string;
        
    }
    
    
    @ChildEntity()
    export class Photo extends Content {
        
        @Column()
        size: string;
        
    }
    
    @ChildEntity()
    export class Question extends Content {
        
        @Column()
        answersCount: number;
        
    }
    
    @ChildEntity()
    export class Post extends Content {
        
        @Column()
        viewCount: number;
        
    }
    

    【讨论】:

      【解决方案2】:

      您可以在 typeorm 中将 @ChildEntity() 用于子类,将 @Entity() 用于主类。

      【讨论】:

        猜你喜欢
        • 2022-09-27
        • 1970-01-01
        • 1970-01-01
        • 2015-09-25
        • 1970-01-01
        • 2017-03-15
        • 2012-10-06
        • 2010-11-24
        • 1970-01-01
        相关资源
        最近更新 更多