我有一个返回查询的方法:
def list:Query[User] = from(users)(u => where(u.age>20) select(u))
现在我要计算列表,但这个方法:
list.count(_ => true)
将获取并循环列表中的所有元素。
我想找到一个解决方案来制作Query[User]
的“选择计数”声明,但尚未找到。
或者我必须为count计算另一种方法:
def countList: Long = from(users)(u => where(u.age>20) compute(count))
这不是我想要的。
答案 0 :(得分:2)
尝试撰写两个查询:
from(list)(_ => compute(count))
答案 1 :(得分:0)
在这种情况下,创建一个通用查询构建器可能是有意义的,因此您可以将条件逻辑保持在一个位置。在分页查询结果集时很方便。
def queryBuilder[T](action: User => WhereState[Conditioned] => QueryYield[T]) : Query[T] = from(users)(u => action(u)(where(u.age>20)))
def countQuery = queryBuilder(u => w => w.compute(count))
def selectQuery = queryBuilder(u => w => w.select(u))
答案 2 :(得分:0)
以下是DAO对象的示例:
def countByJobPostingId(jobPostingId: Int): Long = {
inTransaction {
val q = from(table)(t =>
where(t.jobPostingId === jobPostingId)
compute count
)
LOG.debug(q.statement)
q.head.measures
}
}