首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >具有TypeORM循环依赖关系的OneToOne和ManyToOne

具有TypeORM循环依赖关系的OneToOne和ManyToOne
EN

Stack Overflow用户
提问于 2021-08-10 23:20:28
回答 1查看 1.5K关注 0票数 4

我把这两个实体联系在一起:

代码语言:javascript
运行
复制
@Entity()
export class Message {

    // ... other columns ...

    @OneToMany(() => Action, action => action.message, { eager: true, cascade: true })
    public actions: Action[];
}
代码语言:javascript
运行
复制
@Entity()
export class Action {

    // ... other columns ...

    @ManyToOne(() => Message, message => message.actions, { nullable: false })
    public message?: Message;
}

但是,当用户采取行动时,我想记录消息实体。我尝试在消息中添加一个额外的关系,如下所示:

代码语言:javascript
运行
复制
@Entity()
export class Message {

    // ... other columns ...

    @OneToMany(() => Action, action => action.message, { eager: true, cascade: true })
    public actions: Action[];

    @OneToOne(() => Action, { nullable: true })
    @JoinColumn()
    public action_taken: Action;
}

但是,当尝试保存一个填充了actions关系的新消息(尝试一次用cascade: true保存它们)时,我会得到以下错误:

代码语言:javascript
运行
复制
TypeORMError: Cyclic dependency: "Action"
    at new TypeORMError (/app/node_modules/typeorm/error/TypeORMError.js:9:28)
    at visit (/app/node_modules/typeorm/persistence/SubjectTopoligicalSorter.js:144:23)
    at visit (/app/node_modules/typeorm/persistence/SubjectTopoligicalSorter.js:160:21)
    at visit (/app/node_modules/typeorm/persistence/SubjectTopoligicalSorter.js:160:21)
    at SubjectTopoligicalSorter.toposort (/app/node_modules/typeorm/persistence/SubjectTopoligicalSorter.js:139:17)
    at SubjectTopoligicalSorter.sort (/app/node_modules/typeorm/persistence/SubjectTopoligicalSorter.js:53:45)
    at SubjectExecutor.<anonymous> (/app/node_modules/typeorm/persistence/SubjectExecutor.js:99:124)
    at step (/app/node_modules/tslib/tslib.js:143:27)
    at Object.next (/app/node_modules/tslib/tslib.js:124:57)
    at /app/node_modules/tslib/tslib.js:117:75

设置cascade: false不会引发错误,但也不会保存相关记录。

我遗漏了什么?有什么办法我仍然可以拥有cascade: true并与实体有双重关系吗?还是我必须手动保存相关记录?

EN

回答 1

Stack Overflow用户

发布于 2022-04-12 12:04:24

如果出现此问题,在@ManyToOne @OneToMany关系中,可以通过删除关系中没有cascade的一方来解决。错误消失了,级联起作用了。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68734399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档