1

typeorm (^0.2.41) を使用し、カスタム BaseModel から拡張する 2 つのモデルを定義します。

ベースモデル:

import { BaseEntity } from 'typeorm';

export class BaseModel extends BaseEntity {
}

カテゴリー:

@Entity('Category', { schema: 'public' })
export class Category extends BaseModel {
  @PrimaryGeneratedColumn({ type: 'integer', name: 'id' })
  id: number;

  @OneToMany(() => AbilityCategory, (abilityCategory) => abilityCategory.category, { onDelete: 'CASCADE' })
  abilityCategories: AbilityCategory[];
}

能力区分:

@Entity('_ability_category', { schema: 'public' })
export class AbilityCategory extends BaseModel {
  @PrimaryGeneratedColumn({ type: 'integer', name: 'id' })
  id: number;

  @ManyToOne(() => Category, (category) => category.abilityCategories)
  @JoinColumn([{ name: 'categoryId', referencedColumnName: 'id' }])
  category: Category;
}

(ここで言及する前に、不要なフィールドを削除しました)

そして、私はこのクエリを書きます:

await Category.find({
  where: {
    type: 'JobCategory',
    'abilityCategories.id': 13
  },
  join: {
    alias: 'category',
    innerJoinAndSelect: { abilityCategories: 'category.abilityCategories' }
  },
  take: 5
}
);

しかし、生のSQLクエリでは、nullをabilityCategories.idに渡します:

SELECT DISTINCT "distinctAlias"."category_id" as "ids_category_id"
FROM (SELECT "category"."id" AS "category_id"
      FROM "public"."Category" "category"
               INNER JOIN "public"."_ability_category" "abilityCategories"
      ON "abilityCategories"."categoryId" = "category"."id"
      WHERE ("category"."type" = $1 AND "abilityCategories"."id" = $2)) "distinctAlias"
ORDER BY "category_id" ASC
LIMIT 5 -- PARAMETERS: ["JobCategory",null]

2 番目のパラメーターの null 値の理由を見つけるのを手伝ってくれる人はいますか?

4

1 に答える 1

0

GitHubのこの問題に関連しています

https://github.com/typeorm/typeorm/issues/3890

于 2022-02-07T14:27:10.227 に答える