我有一个实体Transaction
和一个实体Integration
@Entity()
export default class Transaction {
@PrimaryGeneratedColumn()
public id_trans?: number;
@OneToOne(type => Integration, i => i.transaction, { nullable: true })
public integration?: Integration;
}
和
@Entity()
export default class Integration {
@PrimaryGeneratedColumn()
public id_cust?: number;
@OneToOne(type => Transaction, t => t.integration)
@JoinColumn({ referencedColumnName: 'id_trans', name: 'int_id_module' })
public transaction?: Transaction;
}
我试图通过使用Integration属性作为过滤器来查询事务。
const id_api = 10;
const transaction = await repository.find({
where: { integration: { int_id_api: id_api} },
relations: ['integration', 'customer'],
});
但是即使integration.int_id_api
与id_api
属性不同,它也会返回整个交易表
我在做什么错。我应该怎么做才能使此查询正常工作?
答案 0 :(得分:-1)
您需要向所有实体添加主键。 From the doc:
每个实体必须至少具有一个主键列。这是一个 要求和您无法避免。要将列设为主键, 您需要使用@PrimaryColumn装饰器。
假设您像这样更新Integration
实体
@Entity()
export default class Integration {
@PrimaryColumn()
public id_inte: number;
@OneToOne(type => Transaction, t => t.integration)
@JoinColumn({ referencedColumnName: 'id_trans', name: 'int_id_module' })
public transaction?: Transaction;
}
您应该能够找到类似的交易
const transaction = await repository.find({
where: { integration: { id_inte: some_id } },
relations: ['integration', 'customer'],
});