Home > Blockchain >  TypeORM (MySQL) Failing to create ManyToOne / OneToMany Relationships
TypeORM (MySQL) Failing to create ManyToOne / OneToMany Relationships

Time:11-25

I am following the documentation from TypeORM directly here.

The Entity & relationship I am trying to create is the following:

ReportsEntity
@Entity({name: "reports"})
export class ReportsEntity {
    @PrimaryGeneratedColumn('uuid')
    uuid: string;

    @PrimaryColumn()
    @ManyToOne(() => ApplicationsEntity, (application) => application.reports)
    application: ApplicationsEntity

    @Column()
    description: string

    @Column({ type: 'timestamp' })
    @CreateDateColumn()
    createdAt: Date;

    @Column({ type: 'timestamp' })
    @UpdateDateColumn()
    updatedAt: Date;
}
ApplicationsEntity
@Entity({name: "applications"})
export class ApplicationsEntity {
    @PrimaryGeneratedColumn('uuid')
    uuid: string;

    @Column()
    name: string;

    @Column()
    description: string;

    @Column({ type: 'timestamp' })
    @CreateDateColumn()
    createdAt: Date;

    @Column({ type: 'timestamp' })
    @UpdateDateColumn()
    updatedAt: Date;

    //Relationships
    @OneToMany(() => ReportsEntity, (report) => report.application)
    reports: ReportsEntity[]
}

When launching however, I get the following error from MySQL:

Data type "Object" in "ReportsEntity.application" is not supported by "mysql" database.

I fail to see what I miss or what I am doing wrong when reviewing & comparing the documentation.

CodePudding user response:

remove @PrimaryColumn() above the @ManyToOne, because it's trying to create column with data type object "ApplicationsEntity", which is not supported by mysql

ReportsEntity

 @ManyToOne(() => ApplicationsEntity, (application) => application.reports)
    application: ApplicationsEntity

ApplicationsEntity

 @OneToMany(() => ReportsEntity, (report) => report.application)
    reports: ReportsEntity[]
  • Related