未来不返回任何东西

Future not returning anything

正在尝试从数据库中获取结果并return获取未来的结果集。但问题是在访问未来结果时我没有得到任何回应。

下面是代码片段:

  def getAll(): Future[Iterable[Employee]] = {
  Future{
    fetchEmployees()
   }(ec)
  }

  def fetchEmployees(): Iterable[Employee]={
  var empList =  ListBuffer[Employee]()
      db.withConnection{ conn =>
        val statement = conn.createStatement()
        val rs = statement.executeQuery("Select * from Employee")
        while (rs.next()){
          println(rs.getString("EmpCode")+" "+rs.getString("FirstName")+" "+rs.getString("LastName"),rs.getString("Department"))
          val emp = Employee(rs.getString("EmpCode"),rs.getString("FirstName"),rs.getString("LastName"),rs.getString("Department"))
          empList.appended(emp)
        }
      }
   empList
 }

这是尝试访问 return 未来对象的地方

def findAll: Future[Iterable[EmployeeResource]] = {
println("Inside resource handler")
repository.getAll().map(iterableEmp => {
  iterableEmp.foreach(emp => println(s"Name is $emp.firstName"))
  iterableEmp.map(emp=>createResource(emp))
})(ec)

}

不打印任何内容。

查看 appended 方法的文档——注意术语,它不是 "append"(就像在命令中一样),而是 "appended",比如 [=24] =]如果...

def appended[B >: A](elem: B): ListBuffer[B]

A copy of this sequence with an element appended.

您的代码:

empList.appended(emp)

创建一个新的 ListBuffer,但您丢弃它的结果并且您的初始列表缓冲区从未真正被修改。 (打开 -Ywarn-value-discard scalac 选项总是一个好主意!)

您需要使用 += 运算符(或 addOne 方法)。