在TypeOrm中选择名称错误的索引

时间:2017-11-28 16:33:50

标签: mysql typescript types typeorm

当我尝试用.find()选择一个人时,它会按照它应该选择。但Select中有几个字段,我没有声明像这样。例: 领域:

... 
@Index("mail_blog_yn",["mail_blog_yn",])
...
export class person {
 ...
   @ManyToOne(type=>lov_jn_kz, mail_blog_yn=>mail_blog_yn.persons4)
   @JoinColumn()
   mail_blog_yn:lov_jn_kz;
 ...
}

信息:实体是使用TypeOrm-Model-Generator

生成的

Select在日志中显示如下:

...
`person`.`mailBlogYnKeyTypKz` AS `person_mailBlogYnKeyTypKz`
...

这里是代码和连接设置:

typeorm.createConnection({
  type: "mysql",
  host: "localhost",
  port: 3306,
  username: Configuration.Database.user,
  password: Configuration.Database.password,
  database: Configuration.Database.database,
  entities: [
   ...
    person,
   ....
  ],
  synchronize: false,
  logging: true
}).then(connection => {
  const modelRepository: typeorm.Repository<person> =     connection.getRepository(person);
  modelRepository.find({
    "username" : 'x'
 }).then(( persons: person[]) => {
    console.log(JSON.stringify(persons));


  });
}).catch(error => console.log(error));

这是Person.ts和完整的sql语句以及关于我的表人的一些数据。 Select-Problem.zip

2 个答案:

答案 0 :(得分:0)

我现在有一个解决方法

使用TypeORM中的QueryBuilder,我只能选择我真正需要的值,并阻止orm选择所有值。

仍在等待真正的解决方案。

答案 1 :(得分:0)

是的,它是发电机的问题。 (见这里:Typeorm Issue 1253

@ManyToOne(type=>lov_jn_kz, mail_blog_yn=>mail_blog_yn.persons4)
@JoinColumn()
mail_blog_yn:lov_jn_kz;

应该是:

@ManyToOne(type=>lov_jn_kz, mail_blog_yn=>mail_blog_yn.persons4)
@JoinColumn({ name: "mail_blog_yn" })
mail_blog_yn:lov_jn_kz;

这解决了这个问题,但手动操作对我来说不是一个选项,所以typeorm-model-generator绝对应该解决这个问题。

在typeorm-model-generator上跟踪此问题:Issue #13