问题描述
您好,我正在尝试将外键设置为不是typeorm中的主键的列,但出现错误
我有员工和部门
部门经理ID中有一列,该列必须引用员工表中的列寄存器。
员工实体:
0
部门实体:
@Entity({ name: 'employees' })
export class Employee extends SharedProp {
constructor(
firstName: string,lastName: string,) {
super();
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({ type: 'string',name: 'user_id',nullable: true })
user_id: string;
@Column()
departament_id: string;
@ManyToOne(() => Departament,(departament: Departament) => departament.employees)
@JoinColumn({ name: 'departament_id' })
departament: Departament;
@OneToOne(() => User)
@JoinColumn({ name: 'user_id' })
user: User;
}
我试图生成导致以下情况的迁移:
@Entity({ name: 'departaments' })
export class Departament {
@PrimaryGeneratedColumn('uuid')
id: string;
@Column()
departament_name: string;
@Column({ type: 'string',name: 'manager_id',nullable: true })
manager_id: string | null;
@OneToOne(() => Employee,employee => employee.departament,{
nullable: true,})
@JoinColumn({ name: 'manager_id',referencedColumnName: 'matricula' })
manager: Employee;
@OneToMany(() => Employee,(employee: Employee) => employee.departament)
employees: Array<Employee>;
@CreateDateColumn({ name: 'created_at' })
createdAt: Date;
@UpdateDateColumn({ name: 'updated_at' })
UpdatedAt: Date;
}
但是运行迁移时出现此错误:
查询失败:ALTER TABLE“部门”添加约束 “ FK_65bfca70b0ffbf5351061f2ea64”外键(“ manager_id”)参考 “ employees”(“ matricula”)删除不采取行动,而更新不采取行动
错误:错误:没有与给定键匹配的唯一约束 引用表“员工
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)