作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有两个实体:project
和 actor
。
export abstract class BaseEntityModel {
@PrimaryGeneratedColumn()
id: number;
}
@Entity()
export class Project extends BaseEntityModel {
@Column()
title: string;
@OneToMany(type => Actor, actor => actor.project)
@JoinColumn()
actors: Actor[];
}
@Entity()
export class Actor extends BaseEntityModel {
@Column({unique: true})
title: string;
@ManyToOne(type => Project, project => project.actors)
project: Project;
}
我希望每个项目都有唯一的 Actor 头衔,但不是跨数据库。
projects: [
{
title: "webapp",
actors: [
{
title: "dev"
}
]
},
{
title: "json-parser",
actors: [
{
title: "dev"
},
{
title: "target"
}
]
}
]
projects: [
{
title: "webapp",
actors: [
{
title: "dev"
},
{
title: "dev"
}
]
},
{
title: "json-parser",
actors: [
{
title: "dev"
},
{
title: "target"
}
]
}
]
@Column({unique: true})
跨表唯一,这不是我想要的。还有类装饰器@Unique(['title'])
,但它似乎在做同样的事情。
是否有我可以使用的 TypeORM 的东西,或者我是否必须检查自己是否 actor.title
已经存在于项目中。避免在同一项目中重复 actor.title
。同时保持在数据库中多次使用相同的 actor.title
的可能性?
请注意,Actor
实体不应在项目
之间共享(没有多对多关系)。
最佳答案
将 @Unique(['title', 'project'])
类装饰器添加到 Actor
似乎是我想要的,请注意我已经“损坏"我的数据库以某种方式和迁移仅在删除/创建后才能正常工作。
关于database - 如何对一对多关系进行唯一约束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54712765/
我是一名优秀的程序员,十分优秀!