如何使用使用存储库和一对多关系插入数据?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用使用存储库和一对多关系插入数据?相关的知识,希望对你有一定的参考价值。

我有两个实体,产品和类别我曾尝试将数据添加到数据库,但没有收到错误消息。但是结果不是我的期望。结果成功,但是当我转到mysql并查看相关表时,categoryId字段似乎被标记为null

我的产品实体

export class Product {

  @PrimaryGeneratedColumn({ type: 'bigint', unsigned: true })
  id: number;

  @Column({ type: 'varchar', length: 255 })
  name: string;

  @Column({ type: 'int' })
  price: number;

  @Column({ type: 'varchar', length: 255 })
  code: string;

  @Column({ type: 'timestamp', nullable: true })
  created_at: Date;

  @ManyToOne(type => Category, category => category.products,
    { cascade: ['insert', 'update'],eager:true,onDelete:"CASCADE",onUpdate:"CASCADE" })
  category: Category;
}

我的产品服务

@Injectable()
export class ProductService {
  constructor(
    @InjectRepository(Product)
    private productRepository: Repository<Product>,
  ) {
  }




  create(createProductDto: ProductDto): Promise<Product> {
    const product = new ProductDto();
    product.categoryId =createProductDto.categoryId;
    product.code=createProductDto.code;
    product.name = createProductDto.name;
    product.price = createProductDto.price;
    return  this.productRepository.save(product)
  }


}
答案

您需要将categoryId外键添加到Product实体:

export class Product {
  //...
  @Column()
  categoryId: number;
}

以上是关于如何使用使用存储库和一对多关系插入数据?的主要内容,如果未能解决你的问题,请参考以下文章

插入数据时如何将项目连接到一对多关系中的类别

Android Room:使用 Room 插入关系实体

如何使用 laravel 8 同时保存一对多关系数据

mybatis如何实现一对多关联关系

如何实现一对多关系

27.一对一,一对多,多对多关系表的各种骚操作