在 TypeORM 查询中有不必要的 leftJoin
Having unnecessary leftJoin in TypeORM query
我有两个实体,
@Entity('forms')
export class Form {
// Form values
// We set eager to true so that the values are loaded when we do an upsert
@OneToMany('FormValueText', 'form', { eager: true, cascade: true })
textValues: FormValueText[];
@Column({ type: 'smallint' })
@Field()
version: number;
@Column({ type: 'text' })
@Field()
projectID: string;
}
@Entity('formValuesText')
export class FormValueText {
@ManyToOne('Form', 'textValues')
@JoinColumn({ name: 'formID' })
form: Form
@Column({ type: 'varchar' })
@Field()
value: string;
}
当我尝试从第一个实体(表单)的服务进行查询时
repo.find({
select: ['version'],
where: { projectID },
});
查询包括 LEFT JOIN 和 formValuesText
SELECT
"Form"."version" AS "Form_version", "Form"."id" AS "Form_id"
FROM
"forms" "Form"
LEFT JOIN "formValuesText" "Form_textValues" ON "Form_textValues"."formID" = "Form"."id"
WHERE ("Form"."projectID" = )
AND("Form"."deletedAt" IS NULL)
预期
SELECT
"Form"."version" AS "Form_version", "Form"."id" AS "Form_id"
FROM
"forms" "Form"
WHERE ("Form"."projectID" = )
AND("Form"."deletedAt" IS NULL)
有没有办法在查询中不使用 LEFT JOIN?
查询具有 LEFT JOIN 的原因是因为 eager: true
在表单实体中。
在我的例子中,在我不想使用 LEFT JOIN 的地方,我应该使用禁用急切关系的 QueryBuilder。
参考:https://orkhan.gitbook.io/typeorm/docs/eager-and-lazy-relations
我有两个实体,
@Entity('forms')
export class Form {
// Form values
// We set eager to true so that the values are loaded when we do an upsert
@OneToMany('FormValueText', 'form', { eager: true, cascade: true })
textValues: FormValueText[];
@Column({ type: 'smallint' })
@Field()
version: number;
@Column({ type: 'text' })
@Field()
projectID: string;
}
@Entity('formValuesText')
export class FormValueText {
@ManyToOne('Form', 'textValues')
@JoinColumn({ name: 'formID' })
form: Form
@Column({ type: 'varchar' })
@Field()
value: string;
}
当我尝试从第一个实体(表单)的服务进行查询时
repo.find({
select: ['version'],
where: { projectID },
});
查询包括 LEFT JOIN 和 formValuesText
SELECT
"Form"."version" AS "Form_version", "Form"."id" AS "Form_id"
FROM
"forms" "Form"
LEFT JOIN "formValuesText" "Form_textValues" ON "Form_textValues"."formID" = "Form"."id"
WHERE ("Form"."projectID" = )
AND("Form"."deletedAt" IS NULL)
预期
SELECT
"Form"."version" AS "Form_version", "Form"."id" AS "Form_id"
FROM
"forms" "Form"
WHERE ("Form"."projectID" = )
AND("Form"."deletedAt" IS NULL)
有没有办法在查询中不使用 LEFT JOIN?
查询具有 LEFT JOIN 的原因是因为 eager: true
在表单实体中。
在我的例子中,在我不想使用 LEFT JOIN 的地方,我应该使用禁用急切关系的 QueryBuilder。
参考:https://orkhan.gitbook.io/typeorm/docs/eager-and-lazy-relations