使用TypeORM Model Generator生成Issue实体时projectId类型异常,求配置方案
解决TypeORM Model Generator生成关联字段类型错误的问题
看起来你遇到的是typeorm-model-generator旧版本的常见问题——默认情况下它会把外键字段直接映射为关联实体的类型,没有同时生成单独的数字类型外键字段和关联实体属性。结合你使用的TypeORM 0.1.12(这个版本确实比较老旧),我给你几个可行的解决方案:
1. 手动修正实体类(最快的临时解决办法)
你可以直接修改生成的Issue实体类,拆分出单独的外键字段和关联属性:
@Entity('Issue') export class Issue { // 单独的外键字段,对应数据库里的project_id,类型为number @Column({ name: 'projectId' }) projectId: number; // 关联实体字段,用于TypeORM的关联查询,类型为Project @ManyToOne(type => Project, project => project.issues) @JoinColumn({ name: 'projectId' }) project: Project; // 其他原有字段... }
这样既保留了用于数据库存储的数字类型外键,又有了TypeORM关联查询需要的实体属性,完全符合你的预期。
2. 调整generator的生成参数
如果你想让工具自动生成正确的结构,可以尝试在运行typeorm-model-generator时添加--generate-relation-id参数(注意:你的0.1.12版本可能不支持这个参数,建议先尝试):
typeorm-model-generator -h localhost -d your_db_name -u your_user -x your_password -e postgres --generate-relation-id
这个参数的作用就是让工具同时生成关联实体属性和对应的外键ID字段。
3. 升级typeorm-model-generator版本
你当前使用的generator版本和TypeORM 0.1.12匹配,但这类字段映射的问题在新版本中已经被修复。如果你的项目允许,建议升级到较新的generator版本(同时注意和TypeORM版本的兼容性),新版本默认会正确区分外键ID字段和关联实体属性。
简单总结:旧版本的generator在处理外键关联时,默认把外键字段名直接用作关联属性的名称,导致类型不符合预期。手动修正或者升级工具版本都能解决这个问题。
内容的提问来源于stack exchange,提问作者secretAgentB
相关产品推荐
相关产品推荐

