TypeORM:在 WHERE 中找不到左连接实体

问题描述 投票:0回答:1

我的服务正在使用左连接查询另一个表,我想在 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
时,该行的值就来了。

nestjs typeorm
1个回答
0
投票

最后它可以使用这样的原始查询:

.where('"ParentStatus"."objektstatus" IS NULL')

我仍然认为上面的对象也应该可以工作

© www.soinside.com 2019 - 2024. All rights reserved.