我有以下文件
Category(type="category", catId = 1, name = "cat")
以及具有
的产品Product(catId=1, type="product"), Product(catId=1, type="product")
现在我想获取所有类别(所有领域)的列表以及每个类别的产品总数。查询运行并正确返回所有类别,但每个类别的产品总数为 0。不过,我确信每个类别都有一个产品。
val catAlias = "catAlias"
val productAlias = "productAlias"
val q =
QueryBuilder
.select(
SelectResult.expression(Function.count(Expression.property("$productAlias.catId").from(productAlias))).`as`("totalProducts"),
SelectResult.all().from(catAlias),
SelectResult.expression(Meta.id.from(catAlias)).`as`("metaId"),
)
.from(
DataSource.database(readsDB).`as`(catAlias),
)
.join(
Join.leftJoin(DataSource.database(readsDB).`as`(productAlias))
.on(
Expression.property("$productAlias.type").equalTo(
Expression.string(
"product",
),
)
.and(
Expression.property("$productAlias.catId")
.equalTo(Expression.property("$catAlias.catId")),
),
),
)
.where(
Expression.property("$catAlias.type").from(catAlias)
.equalTo(Expression.string("category")),
).groupBy(
Expression.property("$catAlias.catId")
)
可能是什么错误?
不确定这是否是正确的方法,但这解决了它:
SelectResult.expression(Function.count(Expression.string("*"))).`as`("productsCount")