Scala菜鸟在这里;对于我的生活,我无法理解为什么我没有得到这个 Anorm SQL 调用的结果。当我运行 SQL 调试输出时,它返回的结果很好,但是在运行代码时,我最终得到一个空的 List()。
我的 RowParser 有问题吗?为什么我在调试输出中看到好的 SQL 但我的result
val 没有收集到它?
我是否在我的 SQL 中遗漏了一些东西.as()
来正确地将结果行映射到解析器?当我删除最后result
一行时,我的result
val 评估为一个 Unit,这绝对是可疑的。
// Case class - SQL results rows go into List of these
case class PerformanceData(
date: String,
kwh: String
)
// RowParser
val perfData = {
get[String]("reading_date") ~ get[String]("kwh") map{
case reading_date~kwh => PerformanceData(reading_date, kwh)
}
}
// SQL Call - function ret type is Seq[PerformanceData]
DB.withConnection("performance") { implicit connection =>
val result: Seq[PerformanceData] = SQL(
"""
SELECT CONCAT(reading_date) AS reading_date,
CONCAT(SUM(reading)) AS kwh
FROM perf
WHERE reading_date >= DATE_SUB(NOW(), INTERVAL 45 DAY)
AND sfoid IN ({sf_account_ids})
GROUP BY reading_date
ORDER BY reading_date DESC
LIMIT 30
"""
).on(
'sf_account_ids -> getSQLInValues(SFAccountIDs)
).as(
User.perfData *
)
// Logger.debug(result.toString) -> EMPTY LIST!??
result // Why is this necessary to return proper type?
}