具有多对多关系,是否可以自动仅选择相关的外键,而无需选择整个相关对象?无需使用查询生成器之类的其他逻辑来显式加入关系表。
假设我有Bank
和Country
个实体,它们之间存在多对多关系(有些银行在一个以上的国家/地区开展业务)。这是我想要实现的:
@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
。
对于多对多关系而言,是否仅选择外键进入实体,而无需选择整个相关国家,也无需使用查询生成器,是否有类似的可能?
答案 0 :(得分:2)
您可以使用@RelationId来执行此操作,然后会急切加载国家/地区ID,因此您不需要任何其他查询:
@Entity()
export class Bank {
@PrimaryGeneratedColumn()
id!: number;
@ManyToMany(_type => Country)
@JoinTable()
countries?: Country[];
@RelationId('countries')
countryIds?: number[];