【发布时间】:2021-11-29 09:28:21
【问题描述】:
我有两个实体,
@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 },
});
查询包括带有 formValuesText 的 LEFT JOIN
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" = $1)
AND("Form"."deletedAt" IS NULL)
期待
SELECT
"Form"."version" AS "Form_version", "Form"."id" AS "Form_id"
FROM
"forms" "Form"
WHERE ("Form"."projectID" = $1)
AND("Form"."deletedAt" IS NULL)
有没有办法在查询中不使用 LEFT JOIN?
【问题讨论】:
-
根据定义:“每次从数据库加载实体时,都会自动加载急切关系。”