【发布时间】:2013-10-31 10:31:52
【问题描述】:
我正在开发简单的 scala web 应用程序,我正在运行一个查询,然后 play 应用程序给出异常
[RuntimeException: UnexpectedNullableFound(ColumnName(.SUM(score),Some(SUM(score)))]
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]
models/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' 也许?
-
我试过
scalar[Long].singleOpt,但仍然遇到同样的异常
标签: mysql scala playframework playframework-2.1 anorm