typeorm:如何进行RIGHT JOIN和SELECT

时间:2017-08-15 09:31:11

标签: postgresql typescript right-join typeorm

如何使用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以进一步按UserEntity.id过滤)

有人可以解释一下这是如何通过typeorm完成的吗?

1 个答案:

答案 0 :(得分:0)

目前没有权利加入Typeorm。从反面建立关系并做左连接

是好的