我的工作簡單的Scala Web App和我運行一個查詢,然後播放應用程序所賜例外如何在scala中使用play framework從Mysql得到結果的總和?
[RuntimeException的:UnexpectedNullableFound(的ColumnName(.SUM(得分),有些(SUM(得分)))) ]
play.api.Application$$anon$1: Execution exception[[RuntimeException: UnexpectedNullableFound(ColumnName(.SUM(score),Some(SUM(score))))]]
at play.api.Application$class.handleError(Application.scala:289) ~[play_2.10.jar:2.1.2]
at play.api.DefaultApplication.handleError(Application.scala:383) ~[play_2.10.jar:2.1.2]
at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$18$$anonfun$apply$18.apply(PlayDefaultUpstreamHandler.scala:310) ~[play_2.10.jar:2.1.2]
at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$18$$anonfun$apply$18.apply(PlayDefaultUpstreamHandler.scala:308) ~[play_2.10.jar:2.1.2]
at play.api.libs.concurrent.PlayPromise$$anonfun$extend1$1.apply(Promise.scala:113) ~[play_2.10.jar:2.1.2]
at play.api.libs.concurrent.PlayPromise$$anonfun$extend1$1.apply(Promise.scala:113) ~[play_2.10.jar:2.1.2]
Caused by: java.lang.RuntimeException: UnexpectedNullableFound(ColumnName(.SUM(score),Some(SUM(score))))
at scala.sys.package$.error(package.scala:27) ~[scala-library.jar:na]
at anorm.Sql$.as(Anorm.scala:535) ~[anorm_2.10.jar:2.1.2]
at anorm.Sql$class.as(Anorm.scala:453) ~[anorm_2.10.jar:2.1.2]
at anorm.SimpleSql.as(Anorm.scala:370) ~[anorm_2.10.jar:2.1.2]
at models.Keyword$$anonfun$getBlogScore$1.apply(Keyword.scala:53) ~[na:na]
at models.Keyword$$anonfun$getBlogScore$1.apply(Keyword.scala:52) ~[na:na]
型號/ keyword.scala
def getBlogScore(word: String, blog: String): Long={DB.withConnection{implicit c=>
SQL("select SUM(score) from keyword where blog like {blog} and word = {word}").on('blog->blog,'word->word).as(scalar[Long].single)
}
}
我想基於一些條件得分列的總和。
給我一些想法來解決這個異常!
我覺得,既然你的查詢可以返回沒有值不能保證你會得到一個Long,可能不需要用一個選項來表示,所以你得到Option [Long]。不記得現在如何做到這一點,可能是'scalar [Long] .singleOpt'? – johanandren
我試過'標量[Long] .singleOpt',但仍然得到相同的異常 –