postgresql “* alias was not found. Maybe you forgot to join it?”使用skip和take和joins

vltsax25  于 2023-11-18  发布在  PostgreSQL
关注(0)|答案(1)|浏览(111)

我使用查询生成器,在我的请求中有几个连接(通过使用leftJoinAndMapMany)。由于连接,我需要使用skiptake进行分页,因为使用offsetlimit时,它的工作方式并不符合我的需要。所以,如果我使用offsetlimit,请求工作正常,我没有任何异常。但是如果我使用skiptake,我有""User"" alias was not found. Maybe you forgot to join it?(不知道为什么有两个引号,也许这是一个问题?)SQL查询调试显示正常查询,我可以在数据库中运行,它的工作。所以问题是在类型数据库方面.如果我删除连接,它与skiptake工作正常。

const dbQuery: SelectQueryBuilder<T> = userRepository.createQueryBuilder('User');
dbQuery.leftJoinAndMapMany(...);
dbQuery.skip(skip);
dbQuery.take(take);

字符串
UPD:我已经检查了typeorm库,发现QueryExpressionMap.prototype.findAliasByName = function (aliasName)函数,发现aliasName在这里带有引号,所以我添加了代码来删除这些引号,现在它可以工作了,但不确定它是否是一个好的解决方案:)

ql3eal8s

ql3eal8s1#

问题是orderBy,在skiptake的情况下,你应该提供User.id,而不是"User"."id"(就像你使用limit/offset的情况一样)

相关问题