Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 如何在anrom和Play框架中使用可空列?_Scala_Null_Playframework_Anorm - Fatal编程技术网

Scala 如何在anrom和Play框架中使用可空列?

Scala 如何在anrom和Play框架中使用可空列?,scala,null,playframework,anorm,Scala,Null,Playframework,Anorm,我有一个案例类MyRecord,我想用于resultset中的每一行: case class MyRecord(id: Int, remindeMe: Option[org.joda.time.DateTime]) 如何选择表中的所有行并使用Scala和Anorm with Play Framework返回MyRecord列表 我试过: def getRecords() : List[MyRecord] = { val records = SQL("SELECT id, data

我有一个案例类MyRecord,我想用于resultset中的每一行:

case class MyRecord(id: Int, remindeMe: Option[org.joda.time.DateTime])
如何选择表中的所有行并使用Scala和Anorm with Play Framework返回MyRecord列表

我试过:

def getRecords() : List[MyRecord] = {
      val records = SQL("SELECT id, data FROM mytable")().collect {
          case Row(id: Int, Some(data: Long)) => 
                      MyRecord(id, new org.joda.time.DateTime(data))
     }
}

如果列数据为null,则我不需要任何数据,否则我希望在case类中使用一些数据作为提醒。是的,上面的Scala代码非常错误,但我不知道如何解决这个问题。

这应该可以,因为您已经定义了选项:

def getRecords() : List[MyRecord] = {
      SQL("SELECT id, data FROM mytable")().collect {
          case Row(id: Int, Some(data: Long)) => 
                  MyRecord(id, Some(new org.joda.time.DateTime(data)))
          case Row(id: Int, None) => 
                  MyRecord(id, None)

     }
}
粘贴的情况将忽略所有“无”结果,因为它们与某些数据不匹配


编辑:如@kassens所说,在末尾添加toList可以解决这个问题。我在1.2.2-Scala 0.91环境中测试了它。有办法给他打分吗

谢谢,但是我怎样才能把它列在清单上呢?现在我得到了这个错误:引发的错误是:类型不匹配;找到:scala.collection.immutable.Stream[models.MyRecord]required:List[models.MyRecord]@Jonas collect应该返回列表,我已经更新了代码,val不应该在那里。在Scala env No play Anorm中进行了快速测试,结果成功了是的,在运行代码之前,我还删除了val记录。当前代码返回的是scala.collection.immutable.Stream[models.MyRecord],而不是List[models.MyRecord]@Jonas我需要玩scala env,这里没有。我稍后更新,我想您可以在collect中的closing}之后追加一个.toList。