尝试使用关系创建实体的新对象时,我遇到TypeError: Cannot read property 'joinColumns' of undefined
at <...>/src/persistence/SubjectOperationExecutor.ts:282:47
错误。为什么会这样?
在一个实体中我有:
@Entity('users')
export class User extends WhateverEntity {
@PrimaryGeneratedColumn('uuid')
id: string
@ManyToMany(type => Account, account => account.users, {
cascadeInsert: true,
cascadeUpdate: true,
})
@JoinTable()
accounts: Account[]
}
第二个:
@OneToOne(type => User, user => user.id)
owner: User
@ManyToMany(type => User, user => user.accounts)
users: User[]
我这样保存(owner: User
和users: User[]
:
const account = new Account()
account.owner = owner
account.users = users || []
return this.accountRepository.save(account)
即使我发表评论account.owner = owner
或account.users = users || []
,它也无效。它会保存帐户,但不会建立关系。
其他信息:如果我在保存之前console.log
account
,那么它的所有者和用户都有User
类的实例。
owner
和users
是已存在于数据库中的用户实体对象。
答案 0 :(得分:3)
您可能忘记将@JoinColumn()
装饰器放在您的@OneToOne
关系上。
它必须像那样
@OneToOne(type => User, user => user.id)
@JoinColumn()
owner: User