ここで Scala noob; この Anorm SQL 呼び出しの結果が得られない理由は、一生わかりません。SQL デバッグ出力を実行すると、問題なく結果が返されますが、コードを実行すると空の List() になります。
RowParser に問題はありますか? デバッグ出力に適切な SQL が表示されるのに、それがresult
val によって収集されないのはなぜですか?
.as()
結果行をパーサーに適切にマップするために、SQL に何か不足していますか? 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?
}