我的服务正在使用左连接查询另一个表,我想在 where 子句中过滤该表。我总是收到错误:
Property "ParentStatus.objektstatus" was not found in "Parent". Make sure your query is correct.
我在家长中的服务如下所示:
@Injectable()
export class ParentService extends AbstractService {
constructor(
@InjectRepository(Parent)
private readonly ourRepo: Repository<Parent>,
) {
super(ourRepo);
}
async findAll(@Query() params?: any | null, limit: number = 25) {
const qb = this.repository.createQueryBuilder();
return (
qb
.select('Parent.id id')
.leftJoin(
'tbl_parent_status',
'ParentStatus',
'ParentStatus.id = Parent.id',
)
.where({ 'ParentStatus.objektstatus': IsNull() })
.printSql()
.getRawMany()
);
}
我的实体父级:
@Entity({
name: 'tbl_parent',
schema: 'schema2',
})
export class Parent extends BaseEnt {
@PrimaryColumn({ name: 'ID' })
id: string;
@OneToMany(
() => ParentStatus,
(parentstatus) => parentstatus.objektstatus,
)
related?: ParentStatus[];
}
对于状态:
@Entity({
name: 'tbl_parent_status',
schema: 'schema2',
})
export class ParentStatus extends BaseEnt {
@PrimaryColumn({ name: 'ID' })
id: string;
@Column({ name: 'OBJEKT_STATUS', nullable: true })
objektstatus: string;
@ManyToOne(() => Parent, {})
related?: Parent;
}
它是一个 Oracle 数据库,以防万一。我按名称和
Raw
进行了尝试,但它从未正式找到其他表。当我注释掉 where
子句并使用创建的查询手动添加 where 子句时,查询有效。
更新1: 当我添加
addSelect
时,该行的值就来了。
最后它可以使用这样的原始查询:
.where('"ParentStatus"."objektstatus" IS NULL')
我仍然认为上面的对象也应该可以工作