0

当我尝试用它选择一个人时,.find()它会做一个选择。但是选择中有几个字段,我没有像这样声明。示例:字段:

... 
@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 生成的

选择在日志中如下所示:

...
`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 语句和关于我的表人的一些数据。 选择问题.zip

4

2 回答 2

0

我现在有一个解决方法

使用TypeORM中的 QueryBuilder 可以让我只选择我真正需要的值,并防止 orm 选择所有值。

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

于 2017-11-30T20:35:22.503 回答
0

是的,它是生成器的问题。(见这里:Typeorm 问题 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 上跟踪此问题:问题 #13

于 2017-12-05T13:58:30.990 回答