仅在TypeORM

时间:2019-09-06 10:02:21

标签: typeorm

具有多对多关系,是否可以自动仅选择相关的外键,而无需选择整个相关对象?无需使用查询生成器之类的其他逻辑来显式加入关系表。

假设我有BankCountry个实体,它们之间存在多对多关系(有些银行在一个以上的国家/地区开展业务)。这是我想要实现的:

@Entity()
export class Country {
  @PrimaryGeneratedColumn()
  id!: number;
  // ... other columns
}

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

  // ... other columns

  @ManyToMany(_type => Country)
  @JoinTable()
  countries?: Country[];

  // TODO: how to achieve this without tricks?
  countryIds?: number[];
}

对于一对多关系,可以在该关系上使用@JoinColumn(name: 'countryId'),然后再使用@Column() countryId: number

对于多对多关系而言,是否仅选择外键进入实体,而无需选择整个相关国家,也无需使用查询生成器,是否有类似的可能?

1 个答案:

答案 0 :(得分:2)

您可以使用@RelationId来执行此操作,然后会急切加载国家/地区ID,因此您不需要任何其他查询:

@Entity()
 export class Bank { 
    @PrimaryGeneratedColumn() 
    id!: number; 
    @ManyToMany(_type => Country) 
    @JoinTable() 
    countries?: Country[];

    @RelationId('countries')
    countryIds?: number[];