如何解决TypeORM:所有权方面如何运作?
假设我们有两个模型 Profile
和 User
:
import {Entity,PrimaryGeneratedColumn,Column,OnetoOne} from "typeorm";
import {User} from "./User";
@Entity()
export class Profile {
@PrimaryGeneratedColumn()
id: number;
@Column()
gender: string;
@Column()
photo: string;
@OnetoOne(() => User,user => user.profile) // specify inverse side as a second parameter
user: User;
}
import {Entity,OnetoOne,JoinColumn} from "typeorm";
import {Profile} from "./Profile";
@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number;
@Column()
name: string;
@OnetoOne(() => Profile,profile => profile.user) // specify inverse side as a second parameter
@JoinColumn()
profile: Profile;
}
我想在这两个模型之间建立双向关系并且它有效,我可以从 Profile
找到 User
,反之亦然。但是,当我运行 SHOW CREATE TABLE profile
时,没有任何对 User
模型的引用!那么它是如何工作的呢?如何从 User
方找到加入 Profile
?
请问楼主哪一边影响演出?如果不是,那么考虑将 @joinColumn
放在哪一边有什么意义?
解决方法
如您所见,数据库中的 User 定义没有对 Profile 的引用,因为 User 表中没有 @JoinColumn
。 @JoinColumn
定义了数据库中的外键关系。 @OneToOne
用于我的 TypeOrm 生成元数据和查询,但它不会影响数据库架构。
注意:关系的一侧只能有 @JoinColumn
。
如果是真正的一对一关系,@JoinColumn
放在哪一边都没有关系。
如果 Profile 行没有匹配的 User 行,则 @JoinColumn
必须在 User 上。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。