斯卡拉.播放:获取数据和测试结果



我有一个返回两行和两列值的sql查询。我想获取该数据并检查它是否为空。我该怎么做?我是带有游戏框架的 scala 的新手,任何人都可以在这里帮助我。我使用模型类来存储响应并以 json 格式显示,但我想知道如何检查数据的条件。

val query= s""" select * from table"""
override def map2Object(implicit map: Map[String, Any]): HierarchyEntryBillingRoleCheck = {
  HierarchyEntryBillingRoleCheck(str("roleName"), oint("PersonID"))
}

现在我想知道如何检查 sql 返回空还是真数据的条件,我想执行下一个 sql 查询。

所以我尝试了一些在类型转换中出错的方法:

override val singleQuery = s"""select * from Sitable"""
override val allQuery= s"""select * from Sitable1"""
override def map2Object(implicit map: Map[String, Any]): HierarchyEntryBillingRoleCheck = {
  HierarchyEntryBillingRoleCheck(str("roleName"), oint("PersonID"))
}
def map2ObjectBilling(implicit map: Map[String, Any]): HierarchyEntryBilling = {
  HierarchyEntryBilling(str("Name"), str("Provider"), oint("Year"), 
    ostr("Month"), ostr("Status"), ostr("ProviderType"))
}
def getAll(implicit loginName: String): Future[Seq[HierarchyEntryBillingRoleCheck]] = {
  doQueryIgnoreRowErrors(allQuery, "loginName" -> loginName)
  result.map {
    if (map2Object.roleName !="" && map2Object.PersonID.isEmpty) {
      "error"
    } else {
      getOnetask()
    }  //GEtting error with unit type cannot resolve future[seq[]]
  }
  def getOnetask(): Future[Seq[HierarchyEntryBilling]] = {
    doQueryIgnoreRowErrors(singleQuery)
  } //Getting error with type unit does not confirm Future[Seq[]]

.//doQueryignore errors signature=>

  protected def doQueryIgnoreRowErrors(query: String, args: NamedParameter*) 
   = {
 logger.debug(s"SQL: $query, args: $args")
 TimedFuture(actualityTimeout) {
  queryHandler.doQuery(query, args: _*) map { list =>
    // ignore mapping errors of specific rows
    list.flatten
   }
  } flatMap {
  case scala.util.Success(s) => Future.successful(s)
  case Failure(ex) if ex.isInstanceOf[SQLException] &&
    ex.getMessage == "The executeQuery method must return a result set." => 
  Future.successful(Nil)
  case Failure(fail)         =>
    Future.failed(fail)

请检查您的doQueryIgnoreRowErrors方法的签名我怀疑它应该是这样的:

 def doQueryIgnoreRowErrors(sql: String, name: String): Future[Seq[HierarchyEntryBillingRoleCheck]] = {
    // next lines instead of calling data sources
    Future[Seq[HierarchyEntryBillingRoleCheck]] {
      List(HierarchyEntryBillingRoleCheck(1, "Data"))
    }
  }

我假设你得到的结果是这样的:

    def getAll(implicit loginName: String): Future[Seq[HierarchyEntryBillingRoleCheck]] = {
val result = doQueryIgnoreRowErrors(allQuery, "loginName")
.. 
}

如果您仍在为此苦苦挣扎,请告诉我。

最新更新