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[]
}
