typeorm为没有主键的列设置fk

问题描述

您好,我正在尝试将外键设置为不是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 (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...