【发布时间】:2019-11-20 18:59:09
【问题描述】:
我正在关注关于如何创建 a ViewEntity 的 TypeOrm 文档,以便生成和查询我的数据库的自定义视图。但是在运行时,生成的 SQL 不是我所期望的。文档提到提供给@ViewEntity() 的表达式可以是一个查询。这是我的模型:
@ViewEntity({
expression: `
SELECT t1.*, t1.CountOfA + t1.CountOfB AS Total
FROM (
SELECT q.CountOfA, q.CountOfB
FROM questions q
) AS t1`
})
export class CountViewEntity {
@ViewColumn()
CountOfA: number;
@ViewColumn()
CountOfB: number;
@ViewColumn()
Total: number;
}
所以我希望Repository<CountViewEntity> 会为我的questions 表中的每一行提供一条包含CountOfA、CountOfB 和Total 的记录。所以我执行这个:
this.countViewRepository.find();
但是会生成以下 SQL:
选择
CountViewEntity.CountOfAASCountViewEntity_CountOfA,CountViewEntity.CountOfBASCountViewEntity_CountOfB,CountViewEntity.TotalASCountViewEntity_TotalFROMCountViewEntityp> @8
我收到关于表 count_view_entity 不存在的错误。
我做错了什么?
编辑:
嗯...自从我提出赏金以来已经有一天了,我收到的答案/评论让我思考:我是 MySQL 新手以及 TypeORM 新手,所以也许我只是忽略了 TypeORM 文档的假设制作。我以为生成的 SQL 会查询实际的数据库表,但我只是重读了文档,尤其是这一部分:
视图实体是一个映射到数据库视图的类
以前对我来说没有任何意义,但我刚刚遇到了一个叫做 a Database View 的东西。也许我应该先创建一个然后对此进行查询?再次感到乐观...
【问题讨论】:
-
可能是
CountViewEntity,而不是`count_view_entity? -
不要以为我明白你的建议:
count_view_entity是由 TypeORM 在进行 SQL 查询时动态生成的;这不是我在任何地方输入的内容。