網站搜尋

javascript - 在 Typeorm 中引用實體的複合主鍵


我有以下實體:

@Entity()
class Group {
  @PrimaryGeneratedColumn()
  id: string

  @PrimaryColumn()
  groupName: string

  @OneToMany(() => User, user => user.group)
  user: User[]
}

@Entity()
class User {
  @PrimaryGeneratedColumn()
  id: string

  @ManyToOne(() => Group)
  group: Group
}

Typeorm會出現以下錯誤:無法實現外鍵。我認為問題在於User實體只需要引用Group的id,但Group有複合主鍵,因此出現錯誤。移除Group的複合主鍵可以解決問題,但有沒有其他方法可以做到這一點。我嘗試了以下方法,但沒有成功:

@Entity()
class User {
  @PrimaryGeneratedColumn()
  id: string

  @ManyToOne(() => Group)
  @JoinColumn([
    {name: 'groupId', referencedColumnName: 'id'},
    {name: 'groupName', referencedColumnName: 'groupName'}
  ])
  group: Group
}


答案#1

我也在使用 TypeORM 時使用過組合主鍵,並遇到了一些麻煩。請解釋一下,既然你已有自動生成的唯一 id,為什麼還要將 groupName 加入主鍵?你不會更想在 id 上使用簡單主鍵,並對 groupName 設置唯一約束嗎?

@Entity()
class Group {
  @PrimaryGeneratedColumn()
  id: string

  @Column({ unique: true })
  groupName: string

  @OneToMany(() => User, user => user.group)
  user: User[]
}