我认为有一个非常典型的问题 -OneToMany通过 typeorm选择关系的最新实体的正确方法是什么?数据库是postgresql
@Entity('hubs')
export class Hub {
@PrimaryGeneratedColumn('uuid')
id: string;
@Column()
ip: string;
@OneToMany(type => HubStatus, statusLog => statusLog.hub, { cascade: true })
statusLog: Array<HubStatus>;
@UpdateDateColumn()
updatedAt: Date;
lastStatus: any;
@AfterLoad()
async getStatus() {
const query = createQueryBuilder(Hub)
.leftJoinAndSelect("Hub.statusLog", "statusLog", 'Hub.id = :id', { id: this.id })
//.addSelect("MAX(statusLog.createdAt)")
//.andHaving('statusLog.createdAt = MAX(statusLog.createdAt)');
//.andWhere('Hub.id = :id', { id: this.id })
//.andWhere('statusLog.createdAt = MAX(statusLog.createdAt)');
//assign part of result to this.lastStatus
}
}
@Entity('hub-status')
export class HubStatus {
@PrimaryGeneratedColumn()
id: string;
@Column({type: 'json')
somecolumn
@ManyToOne(type => Hub, hub => hub.statusLog)
hub: Hub;
@CreateDateColumn()
createdAt: Date;
}
我想获得相关的最新(通过createdAt)HubStatus的@AfterLoad块。max不能在where子句中使用,我也尝试了使用maxin 的多种选项,select但由于不同的原因它们失败了。
绝地无双
慕妹3242003
相关分类