node.js - Varför kräver TypeORM att den omvända sidan av OneToMany anges, men kräver inte att den omvända sidan av ManyToOne anges?
Följande citat är hämtat från TypeORM-dokumentationen:
@OneToMany kan inte existera utan @ManyToOne. Om du vill använda @OneToMany krävs @ManyToOne. Däremot är det omvända inte nödvändigt: Om du bara bryr dig om @ManyToOne-relationen kan du definiera den utan att ha @OneToMany på den relaterade enheten. På det ställe där du anger @ManyToOne - kommer dess relaterade enhet att ha "relations-ID" och främmande nyckel.
Varför behöver du ange den omvända sidan av OneToMany men inte ManyToOne?
Svar #1
Det är eftersom ManyToOne placerar den främmande nyckeln i den nuvarande enhetens tabell, vilket är nödvändigt för generering av SQL-tabelldefinition. Trots allt är det bara en SQL-kolumn som är en främmande nyckel i slutändan, och TypeOrm kräver en enhetsdefinition som gör det möjligt att korrekt generera SQL-satser.
TypeOrm behöver veta var främmande nyckeln är för att generera fetch SQL-frågan för listan, vilket kräver ManyToOne-mappningen. Om OneToMany är odefinierad hämtas ingenting, så det fungerar också.