Наследование таблицы TypeOrm не может правильно отобразить дочерний класс - PullRequest
0 голосов
/ 01 апреля 2020

Я использую typeorm с гнездом js в моем текущем проекте.
Я использую аннотацию наследования таблиц @TableInheritance для достижения наследования таблиц.
Код детали, как показано ниже:

@Entity()
@TableInheritance({ column: { type: 'varchar', name: 'type'}})
export class Vehicle { //  this is the base clss
  @PrimaryGeneratedColumn('uuid')
  id: string

  @Column()
  wheelNumber: number
}


@ChildEntity('BTYPE')
export class Bicycle extends Vehicle { // this is child class 1
  @Column()
  isRoadBike: boolean

  @ManyToOne('Owner', 'bicycles') // it has one-to-many relationship with owner entity
  @JoinColumn({ name: 'owner_id'})
  owner
}

@ChildEntity('CTYPE')
export class Bicycle extends Vehicle {
  @Column()
  engineType: string

  @ManyToOne('Owner', 'cars') // it has one-to-many relationship with owner entity
  @JoinColumn({ name: 'owner_id'})
  owner
}

@Entity()
export class Owner {
 @PrimaryGeneratedColumn('uuid')
 id: string

 @OneToMany('Bicycle', 'owner', { cascade: true, eager: true})
 bicycles

 @OneToMany('Car', 'owner', { cascade: true, eager: true})
 cars
}

Я создаю 1 запись владельца, 1 запись велосипеда и 1 запись автомобиля в базе данных, могу связать их вместе.
Я пытаюсь получить данные.

const owner = await this.entityManager.find(Bicycle)
console.log(owner.bicycles)
console.log(owner.cars)
/** result is as below 
[Bicycle {
  id: 'xxxx-xxxx-xxxx-xxxx',
  wheelNumber: 2,
  isRoadBike: true
},
Bicycle {
  id: 'yyyy-yyyy-yyyy-yyyy',
  wheelNumber: 4,
  isRoadBike: null
}]

[Car {
  id: 'xxxx-xxxx-xxxx-xxxx',
  wheelNumber: 2,
  engineType: null
},
Car {
  id: 'yyyy-yyyy-yyyy-yyyy',
  wheelNumber: 4,
  engineType: 'some engine'
}]

**/

Он не знает, как сопоставить с отношения один-ко-многим с владельцем.
Кто-нибудь знает, как это исправить?

...