早上好!
这是我的代码,问题写在代码下方 这是用户可以订阅项目
的多对多关系 user.entity.ts
@Entity("user")
export class UserEntity {
@PrimaryGeneratedColumn('uuid')
id: string;
@Column({
type: 'varchar',
length: 50,
unique: true,
})
username: string;
@Column('text')
password: string;
@Column('text')
role: string;
@OneToMany(type => SubscriptionEntity, subscriptionEntity => subscriptionEntity.user)
subscription: SubscriptionEntity[];
}
item.entity.ts
@Entity("item")
export class ItemEntity {
constructor() {}
@PrimaryGeneratedColumn() id: number;
@Column('text') name: string;
@Column('text') description: string;
@Column('decimal') price: number;
@Column('text') picture: string;
@OneToMany(type => SubscriptionEntity, subscriptionEntity => subscriptionEntity.item)
subscription: SubscriptionEntity[];
}
subscription.entity.ts
@Entity("subscription")
export class SubscriptionEntity {
@PrimaryColumn() userId: string;
@PrimaryColumn() itemId: number;
@ManyToOne(type => UserEntity, user => user.subscription)
@JoinColumn({name: "userId"})
user: UserEntity;
@ManyToOne(type => ItemEntity, item => item.subscription)
@JoinColumn({name: "itemId"})
item : ItemEntity;
}
问题是我的关系/外键在数据库中未显示:
desc subscription
+--------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+--------------+------+-----+---------+-------+
| userId | varchar(255) | NO | PRI | NULL | |
| itemId | int(11) | NO | PRI | NULL | |
+--------+--------------+------+-----+---------+-------+
我真的看不到那里的问题。 我坚持使用此LINK,在整个底部,您几乎可以看到相同的代码。
答案 0 :(得分:1)
鉴于您希望userId
和itemId
为其表的外键(分别为User
和Item
),则不应将它们定义为主键。在SubscriptionEntity
上,只有一个自动生成的ID作为主键。
但是,如果要对用户强制订购某项商品,则可以使用Unique constraint,例如:@Unique(["user", "item"])