Nestjs一对多关系保存问题

Nestjs一对多关系保存问题,nestjs,typeorm,Nestjs,Typeorm,我有一个服务,我试图用关系实体(一对多)保存实体。我有: 支付实体: @Entity('payment') export class PaymentEntity { @PrimaryColumn() id: number; @OneToMany(type => PaymentExamEntity, paymentExam => paymentExam.payment, { cascade: true }) paymentExams: PaymentExamEntity[

我有一个服务,我试图用关系实体(一对多)保存实体。我有:

支付实体:

@Entity('payment')
export class PaymentEntity {

 @PrimaryColumn()
 id: number;

 @OneToMany(type => PaymentExamEntity, paymentExam => paymentExam.payment,  { cascade: true })
 paymentExams: PaymentExamEntity[];

  ... 
}
工资支出:

@Entity('payment_exam')
export class PaymentExamEntity {
  
  @PrimaryColumn()
  id: number;

  @ManyToOne(type => PaymentEntity, payment => payment.paymentExams)
  @JoinColumn({name: 'payment_id'})
  payment: PaymentEntity;

  ....
}
付款服务:

@Injectable()
export class PaymentService {
    constructor(@InjectRepository(PaymentEntity) private paymentRepo: Repository<PaymentDTO>,
                @InjectRepository(PaymentExamEntity) private paymentExamRepo: Repository<PaymentExamDTO>) {  }

    async create(data: PaymentDTO) {  
        const payment = this.paymentRepo.create(data);
        await this.paymentRepo.save(payment);

        for(let item of data.paymentExams){
            item.payment = payment;

            const paymentExams = this.paymentExamRepo.create(data.paymentExams);
            this.paymentExamRepo.save(data.paymentExams);
        }
        
        return payment;
    }
问题是付款对象在保存后没有使用数据库自动生成的id进行更新,因此外键赋值为空。有没有其他解决办法。如何存储子实体


提前感谢

保存
方法返回一个类型为
付款
且id为字段的对象。您可以将其存储在变量中并在
项目中使用。payment
赋值。

save
方法返回类型为
payment
且id为字段的对象。您可以将其存储在变量中,并在
项目中使用。付款
分配。

确定我通过以下更改使其工作:

1. Payment entity changed id field annotation from  @PrimaryColumn() to  @PrimaryGeneratedColumn()
2. PaymentExam entity changed id field annotation from  @PrimaryColumn() to  @PrimaryGeneratedColumn()
在支付服务中,我只能使用以下内容:

 async create(data: PaymentDTO) {  
        const payment = this.paymentRepo.create(data);
        await this.paymentRepo.save(data);
        return payment;
}

此外,我还使用mysql数据库对这两个表中的主键进行了自动递增,我通过以下更改使其正常工作:

1. Payment entity changed id field annotation from  @PrimaryColumn() to  @PrimaryGeneratedColumn()
2. PaymentExam entity changed id field annotation from  @PrimaryColumn() to  @PrimaryGeneratedColumn()
在支付服务中,我只能使用以下内容:

 async create(data: PaymentDTO) {  
        const payment = this.paymentRepo.create(data);
        await this.paymentRepo.save(data);
        return payment;
}

另外,我使用mysql数据库对这两个表中的主键进行了自动递增

我尝试过,但付款对象仍然不包含存储在数据库中的id值我尝试过,但付款对象仍然不包含存储在数据库中的id值