我需要创建一个复合主键。我有两个实体: user和task。
用户实体
@Entity('users')
export class User extends BaseEntity {
@PrimaryGeneratedColumn('uuid')
public readonly id: string;
@Column({ nullable: false, type: 'varchar', length: 16 })
public readonly name: string;
@OneToMany(() => Task, (task: Task) => task.user)
public readonly tasks: Task[];
}任务实体
@Entity('tasks')
export class Task extends BaseEntity {
@PrimaryGeneratedColumn('uuid')
public readonly id: string;
@Column({ nullable: true, type: 'varchar', length: 16 })
public readonly name: string;
@Column({ type: 'varchar', nullable: false })
public readonly userId: string;
@ManyToOne(() => User, (user: User) => user.tasks)
@JoinColumn({ name: 'userId' })
public readonly user: User;
}在我的表task中,我必须使用复合主键。例如4a00a3738e90e-0007。用户id为'4a00a3738e90e‘,用户任务计数为'0007’。
如何创建复合主键?我在文档中没有找到一个决定。
id name userId
4a00a3738e90e-0001 task1 4a00a3738e90e
4a00a3738e90e-0002 task2 4a00a3738e90e
1er04r35l56en-0001 task1 1er04r35l56en发布于 2021-07-15 18:07:37
如果你试图从“task1”中获取数字1,将其转换为0001并将其作为你的key的一部分,这不应该是你的web应用程序的一个更重要的任务吗?首先生成它,然后将其插入到数据库中。
如果您尝试让组合键由两列组成,我只需将“userId”和“taskCount”设置为复合主键,我认为这是更好的解决方案。可能是这样的:
@ManyToOne(() => User, (user: User) => user.tasks, {primary: true})
@JoinColumn({ name: 'userId' })
public readonly user: User;
@PrimaryColumn({type: "integer"})
public taskCount: number; https://stackoverflow.com/questions/64439306
复制相似问题