为什么在尝试建立关系时未定义joinColumns?

问题描述 投票:1回答:1

当我试图用关系创建实体的新对象时,我得到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: Userusers: User[]

const account = new Account()
account.owner = owner
account.users = users || []

return this.accountRepository.save(account)

即使我评论出account.owner = owneraccount.users = users || []它也不起作用。它会保存帐户,但不会建立关系。


附加信息:如果我在保存前console.log account - 它确实拥有所有者和用户作为User类的实例。


ownerusers是已在数据库中的用户实体对象。

typescript typeorm nestjs
1个回答
3
投票

您可能忘记将@JoinColumn()装饰器放在您的@OneToOne关系上。它必须像那样

@OneToOne(type => User, user => user.id)
@JoinColumn()
owner: User
© www.soinside.com 2019 - 2024. All rights reserved.