typeorm-polymorphic icon indicating copy to clipboard operation
typeorm-polymorphic copied to clipboard

Polymorphic Inheritance

Open Gonzalo9823 opened this issue 4 years ago • 1 comments

Hi! I have a question regarding inheritance.

I have a Organization class (not an entity) and many entities that inherit from this class such as Grower, Company, Client, etc.

What I wan't to do is to have a UserOrganizationRole entity that polymorphically points to this different entities but when I add the PolymorphicChildren decorator to Organization it gives me the error "Class extends value undefined is not a constructor or null" this doesn't happen if a I add the decorator separately in every entity.

I'm doing something wrong or the library doesn't support the heritage of the PolymorphicChildren decorator?

Example:

This works:

export class Organization extends CustomBaseEntity {
  @Column({ unique: true })
  name!: string;
}
@Entity({ name: 'companies' })
export class Company extends Organization {
  @PolymorphicChildren(() => UserOrganizationRole, {
    eager: false,
  })
  users!: UserOrganizationRole[];
}
@Entity({ name: 'clients' })
export class Client extends Organization {
  @PolymorphicChildren(() => UserOrganizationRole, {
    eager: false,
  })
  users!: UserOrganizationRole[];
}

This doesn't works:

export class Organization extends CustomBaseEntity {
  @Column({ unique: true })
  name!: string;

  @PolymorphicChildren(() => UserOrganizationRole, {
    eager: false,
  })
  users!: UserOrganizationRole[];
}
@Entity({ name: 'companies' })
export class Company extends Organization {}
@Entity({ name: 'clients' })
export class Client extends Organization {}

Gonzalo9823 avatar Jul 29 '21 21:07 Gonzalo9823

that should work? Perhaps I've messed something up by not checking abstracts? Or defining to the prototype or something?

bashleigh avatar Jul 30 '21 09:07 bashleigh