我有一个实体:
@Entity()
export class Training {
@PrimaryGeneratedColumn()
id: number;
@Column('jsonb')
workoutExercises: Exercise[];
}
运动实体:
@Entity()
export class Exercise {
@PrimaryGeneratedColumn()
id: number;
@Column()
name: string;
}
数据示例:
[
{
"workoutName": "Monday",
"workoutExercises": [
{
"id": 1,
"sets": 4,
"weight": 100,
"repetitions": 10
}
],
},
{
"workoutName": "Sunday",
"workoutExercises": [
{
"id": 2,
"sets": 4,
"weight": 100,
"repetitions": 10
}
],
}
]
我想查找 id 练习 id 为 1 的实体。
abdul Samad 回答后,我尝试了这个:
this.createQueryBuilder('training')
.where(`:exerciseId IN ("training"."workoutExercises"->>id)`, {
exerciseId,
})
.getMany();
这将返回一个空数组。应该返回一些东西。
this.createQueryBuilder('training')
.where('workoutExercises->>id IN (:exerciseId)', { exerciseId })
.getMany();
希望这会起作用:)。
this.createQueryBuilder('training')
.select()
.where('training.workoutExercises ::jsonb @> :workoutExercises', { workoutExercises: JSON.stringify([{ id: exerciseId }]) })
.execute();
有类似情况,试试这个!