typeorm - typeorm 多对多关系/带有复合键的一侧
问题描述
我的产品表有一个由序列号+产品ID组成的主键,
我想知道在我的多对多关系中我是否只能使用这些主键中的一个键
是否可以在 typeorm 中定义它?
换句话说,在多对多关系中仅使用复合键的主键
雇员:
@Entity({ name: 'employees' })
@Index(['matricula'], { unique: true })
export default class Employee {
constructor(firstName: string, lastName: string) {
this.firstName = firstName;
this.lastName = lastName;
}
@PrimaryGeneratedColumn('uuid')
id: string;
@Column({ name: 'matricula', nullable: false })
matricula: string;
@Column({ name: 'first_name', nullable: false })
firstName: string;
@Column({ name: 'last_name', nullable: false })
lastName: string;
@Column()
departament_id: string;
@ManyToMany(type => Products)
@JoinTable({ name: 'employees_has_products' })
products: Products[];
//departament relations
@OneToOne(
() => Departament,
(departament: Departament) => departament.manager,
)
@ManyToOne(
() => Departament,
(departament: Departament) => departament.employees,
)
@JoinColumn({ name: 'departament_id' })
departament: Departament;
//user relations
@OneToOne(() => User, (user: User) => user.employee, {
cascade: ['insert'],
})
user: User;
//equipament relations
@OneToMany(type => Equipament, equipament => equipament.employees)
equipaments: Equipament[];
@CreateDateColumn({ name: 'created_at' })
createdAt: Date;
@CreateDateColumn({ name: 'updated_at' })
UpdatedAt: Date;
}
产品:
@Entity({ name: 'products' })
export default class Products {
@PrimaryGeneratedColumn()
serial_number: string;
@ManyToOne(type => Product, product => product.products, { primary: true })
@JoinColumn({ name: 'product_id' })
product: Product;
@CreateDateColumn({ name: 'created_at' })
createdAt: Date;
@CreateDateColumn({ name: 'updated_at' })
UpdatedAt: Date;
}
解决方案
推荐阅读
- node.js - sequelize 制作外键复合和唯一索引。
- ruby - 如何用 content_tag 包装数据均衡器
- angular - 角度可拖动/可放置的表格行
- java - Java.io.IOException:error=2,在java中执行curl时没有这样的文件或目录
- scala - 如何使任何的scala列表具有强制属性?
- html - CSS透明边框
- java - 两个数的 LCM
- php - 在 Laravel 中重命名公用文件夹后资产不会加载
- jasper-reports - 无法从 jrxml 文件中检索 JasperReports 属性
- android - 检查是否有默认应用程序的选择器意图