Scala noob here;對於我的生活看不出爲什麼我沒有得到這個Anorm SQL調用的結果。當我運行SQL調試輸出時,它會返回一個結果,但是當通過代碼運行時,我最終會得到一個空的List()。爲什麼這個Anorm結果是一個空列表? (Play 2.1.0)
我的RowParser有問題嗎?爲什麼我在調試輸出中看到好的SQL,但它不是由我的result
val收集的?
我是否在我的SQL .as()
中錯過了某些內容以將結果行正確地映射到解析器?當我刪除最後的result
一行時,我的result
val的計算結果爲一個單位,這肯定是可疑的。
// 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?
}
請參閱[這是我的答案](http://stackoverflow.com/questions/15864564/play-framework-2-0-correct-way-to-represent-a-set-in-a-query-using -anorm)關於Anorm中的'IN'子句。 – maba 2013-04-10 06:21:59