gpt4 book ai didi

typeorm - 为一对一关系创建主键

转载 作者:行者123 更新时间:2023-12-01 22:57:09 25 4
gpt4 key购买 nike

背景:

由于任何唯一的实体数据都是表的候选键,因此任何被限制为 unique 的数据列都是候选键。将外键约束为唯一和主键的语法是什么。例如。我有实体:

@Entity()
export class A extends BaseEntity {
PrimaryColumn()
id: number;
}

@Entity()
export class B extends BaseEntity() {
@OneToOne(() => A) <---- need to set this foreign key unique and the primary key of B
@JoinColumn()
a: A;
}

如上标记,我希望外键是唯一的,并且是B的主键。

到目前为止我尝试了什么:

我以为我找到了解决方案,但是这个语法似乎已经过时了; RelationOptions 不包含 primary 属性:

@OneToOne( type => A, {primary: true})
@JoinColumn()
a: A

此外,似乎可以将列标记为 unique using the @Unique装饰器,但是,想知道在这种情况下是否有更好的方法使列唯一。

最佳答案

注意这里的变化: Typeorm changelogs

主要关系(例如@ManyToOne(() => User, { primary: true }) user: User)支持被移除。您仍然可以使用外键作为主键,但是现在您必须明确定义一个标记为主键的列。

例子,之前:

@ManyToOne(() => User, { primary: true })
user: User

现在:

@PrimaryColumn()
userId: number

@ManyToOne(() => User)
user: User

主列名必须匹配关联实体上的关系名+连接列名。如果关联实体有多个主键,你想指向多个主键,你可以定义多个主列同样的方法:

@PrimaryColumn()
userFirstName: string

@PrimaryColumn()
userLastName: string

@ManyToOne(() => User)
user: User

关于typeorm - 为一对一关系创建主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72764116/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com