【发布时间】:2017-08-15 09:31:10
【问题描述】:
请问如何使用 typeorm 进行以下查询
SELECT *
FROM "UserStrength"
RIGHT JOIN "Strength" ON "Strength"."id" = "UserStrength"."strengthId"
UserStrengthEntity 定义为:
@Entity("UserStrength")
export class UserStrengthEntity extends BaseEntity implements IUserStrength {
@Column({default: false}) isCompleted: boolean;
@ManyToOne(type => UserEntity, user => user.userStrengthArray, {
cascadeAll: true
})
@JoinColumn({name: "userId"})
user: UserEntity;
@OneToMany(type => UserStrengthItemEntity, userStrengthItem => userStrengthItem.userStrength, {
cascadeInsert: true,
cascadeUpdate: true
})
userStrengthItemArray?: UserStrengthItemEntity[];
@ManyToOne(type => StrengthEntity, strength => strength.userStrengthArray, {
cascadeAll: true
})
@JoinColumn({name: "strengthId"})
strength: StrengthEntity;
}
StrengthEntity 是:
@Entity("Strength")
export class StrengthEntity extends BaseEntity implements IStrength {
@Column({length: 50}) name: string;
@Column({length: 100}) title: string;
@Column() strengthType: StrengthType;
@Column({length: 10, nullable: true}) titleColor: string;
@Column({nullable: true}) titleIcon: string;
@ManyToOne(type => ClientEntity, clientEntity => clientEntity.strengthArray, {
cascadeAll: true
})
@JoinColumn({name: "clientId"}) client: ClientEntity
@OneToMany(type => StrengthItemEntity, strengthItem => strengthItem.strength, {
cascadeInsert: true,
cascadeUpdate: true
})
strengthItemArray: StrengthItemEntity[];
@OneToMany(type => UserStrengthEntity, userStrength => userStrength.strength, {
cascadeInsert: true,
cascadeUpdate: true
})
userStrengthArray: UserStrengthEntity[];
}
我想加载一个 UserStrength,它可能与给定strengthType 的强度一起存在也可能不存在(我还需要对 UserEntity 进行 RIGHT JOIN 以进一步按 UserEntity.id 过滤)
谁能解释一下这是如何用 typeorm 完成的?
【问题讨论】:
标签: postgresql typescript right-join typeorm