微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

TypeORM:所有权方面如何运作?

如何解决TypeORM:所有权方面如何运作?

假设我们有两个模型 ProfileUser

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 举报,一经查实,本站将立刻删除。