typescript - Varför är joinColumns undefined när man försöker skapa en relation?


Jag får TypeError: Cannot read property 'joinColumns' of undefined at <...>/src/persistence/SubjectOperationExecutor.ts:282:47-fel när jag försöker skapa ett nytt objekt av en entitet med en relation. Varför händer detta?

I en enhet har jag:

@Entity('users')
export class User extends WhateverEntity {
  @PrimaryGeneratedColumn('uuid')
  id: string

  @ManyToMany(type => Account, account => account.users, {
    cascadeInsert: true,
    cascadeUpdate: true,
  })
  @JoinTable()
  accounts: Account[]
}

Den andra:

@OneToOne(type => User, user => user.id)
owner: User

@ManyToMany(type => User, user => user.accounts)
users: User[]

Och jag sparar så här (där owner: User och users: User[]:

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

return this.accountRepository.save(account)

Det fungerar inte även om jag kommenterar ut account.owner=owner eller account.users=users || []. Det sparar kontot, men skapar inte relationen.

Ytterligare information: om jag console.log account precis innan sparande - har den ägare och användare inuti som instanser av User-klassen.

owner och users är User-entity-objekt som redan finns i databasen.

Svar #1

Du kanske glömde att sätta @JoinColumn()-dekoration på din @OneToOne-relation. Det måste vara så där

@OneToOne(type => User, user => user.id)
@JoinColumn()
owner: User

Relaterade artiklar