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值