最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

TypeORM:保存时无法读取未定义的属性“inverseJoinColumns”

IT培训 admin 2浏览 0评论

TypeORM:保存时无法读取未定义的属性“inverseJoinColumns”

用例:如果尚未在db中创建用户,请创建它 - 如果用户已存在,则更新它。

这种逻辑有效。由于TypeORM的.save()更新实体或在不可用时更新实体,我想使用此方法。

我的问题:创建工作但不更新。在执行此操作时,它会从RelationIdLoader抛出此错误:

this.userRepository.save(user); // user = newly created or updated entity

TypeError:无法读取未定义的属性“inverseJoinColumns”

更新的和创建的之一的唯一区别是更新的具有id属性,这是一个uuid /字符串。

Update

@PrimaryGeneratedColumn('uuid') public id: string;

... // some columns without relations

@OneToMany(type => Finding, finding => finding.reporter)
public reportedFindings: Finding[];

@OneToMany(type => Finding, finding => finding.responsible)
public responsibleFindings: Finding[];

@ManyToMany(type => DataCenter)
public dataCenterResponsiblities: DataCenter[];

@ManyToMany(type => Finding)
public informedFindings: Finding[];
回答如下:

正如@pleerock所指出的那样,所有@ManyToMany必须在拥有方包括@JoinTable装饰器。

因此,我实际问题的具体解决方案如下:

@ManyToMany(type => DataCenter)
@JoinTable()
public dataCenterResponsiblities: DataCenter[];

@JoinTable()
@ManyToMany(type => Finding)
public informedFindings: Finding[];

This is actually well described in the docs.

TypeORM:保存时无法读取未定义的属性“inverseJoinColumns”

用例:如果尚未在db中创建用户,请创建它 - 如果用户已存在,则更新它。

这种逻辑有效。由于TypeORM的.save()更新实体或在不可用时更新实体,我想使用此方法。

我的问题:创建工作但不更新。在执行此操作时,它会从RelationIdLoader抛出此错误:

this.userRepository.save(user); // user = newly created or updated entity

TypeError:无法读取未定义的属性“inverseJoinColumns”

更新的和创建的之一的唯一区别是更新的具有id属性,这是一个uuid /字符串。

Update

@PrimaryGeneratedColumn('uuid') public id: string;

... // some columns without relations

@OneToMany(type => Finding, finding => finding.reporter)
public reportedFindings: Finding[];

@OneToMany(type => Finding, finding => finding.responsible)
public responsibleFindings: Finding[];

@ManyToMany(type => DataCenter)
public dataCenterResponsiblities: DataCenter[];

@ManyToMany(type => Finding)
public informedFindings: Finding[];
回答如下:

正如@pleerock所指出的那样,所有@ManyToMany必须在拥有方包括@JoinTable装饰器。

因此,我实际问题的具体解决方案如下:

@ManyToMany(type => DataCenter)
@JoinTable()
public dataCenterResponsiblities: DataCenter[];

@JoinTable()
@ManyToMany(type => Finding)
public informedFindings: Finding[];

This is actually well described in the docs.

发布评论

评论列表 (0)

  1. 暂无评论