Поля класса BaseEntity не наследуются дочерними элементами

#typescript #inheritance #nestjs #decorator #typeorm

Вопрос:

В моем приложении NestJS я хотел бы создать BaseEntity класс, который будет расширяться каждой сущностью. Я придумал следующий класс:

 export class BaseEntity {  @ApiProperty({ example: 'c057cc8c-ad1b-4081-ba05-41a648e29f19' })  @PrimaryGeneratedColumn('uuid')  id: string;   @ApiProperty({ example: '2021-07-23T16:23:17 00:00' })  @Column({ nullable: true })  archivedAt: UTC;   @ApiProperty({ example: '2021-07-23T16:23:17 00:00' })  @Column({ nullable: false })  createdAt: UTC;   constructor(partial: Partiallt;BaseEntitygt;) {  Object.assign(this, partial);  } }  

Но когда я пытаюсь расширить этот класс следующим образом:

 @Entity() export class Book extends BaseEntity {  @ApiProperty({ example: 'Harry Potter' })  @Column({ nullable: false })  title: string   constructor(partial: Partiallt;Bookgt;) {  super();  Object.assign(this, partial);  } }   

Я получаю сообщение об ошибке:

MissingPrimaryColumnError: Entity "Book" does not have a primary column. Primary column is required to have in all your entities. Use @PrimaryColumn decorator to add a primary column to your entity.

Похоже, что декораторы не наследуются, поэтому основной столбец отсутствует (как и все остальные поля). У вас есть какие-либо другие идеи о том, как создать BaseEntity класс? Ценю вашу помощь 🙂

Комментарии:

1. это странно. Я использую тот же шаблон. У меня есть базовый класс @PrimaryColumn() , который работает так, как ожидалось

2. @MicaelLevi Спасибо, что указали, что это отлично работает для вас. Оказалось, что я импортировал BaseEntity класс из typeorm вместо того, который я создал. Глупая ошибка, спасибо 🙂