下面的代码编译并正常工作,如图所示。但是,如果我尝试 yield Some("SomeConstant"),我会得到如下所示的运行时错误。
为什么会发生这种情况,如何从查询中返回表达式(例如 Some(...))?
def cannotUnpack(db: Database) {
db.withSession {
val data = (for {
rw1 <- TableOne
rw2 <- TableTwo if rw1.cl1 === rw2.cl1 && rw1.cl2 === rw2.cl2 && rw1.cl1 === "0"
now = new Timestamp(System.currentTimeMillis())
six = 6
} yield (uuid, rw1.cl3, "SomeConstant", six, now) ).list // Works
// } yield (uuid, rw1.cl3, Some("SomeConstant"), six, now) ).list // Runtime error
}
}
运行时错误:不知道如何解压 (String, scala.slick.lifted.Column[Option[String]], Some[String], scala.slick.lifted.Column[Int], scala.slick.lifted.Column [java.sql.Timestamp]) 到 T 并打包到 G
rw2 <- TableTwo if rw1.cl1 === rw2.cl1 && rw1.cl2 === rw2.cl2 && rw1.cl1 === "0"
^
环境:Ubuntu上的scala 2.10,Java 7 Slick 1.0.0,SQL Server,JTDS驱动