Выделить значение scala: Some (Rep (OptionFold)). Что значит OptionFold? - PullRequest
0 голосов
/ 09 ноября 2018

У меня следующий код, fromDateValue, toDateValue получаются из строки с форматом БД ГГГГ-ММ-ДД чч: мм: сс с использованием Timestamp.valueOf. inv.montYear объявлен как Option [String] и имеет значения «May 2018» и т. д. Функция fromMonthYear2DBformat

def fromMonthYear2DBformat(mydate: Option[String]): java.sql.Timestamp = {

  println("fromMonthYear2DBformat>mydate = " + mydate)

  if (mydate != None) {
    val dateInfo = mydate.getOrElse("").split(" ")
    if (dateInfo.size > 1) {
      val year = dateInfo(1)
      val monthi = monthName2Number(dateInfo(0))
      val answer =
        Timestamp.valueOf(year + "-" + monthi + "-" + "01 " + "00:00:01.01")
      answer
    } else
      Timestamp.valueOf("1900-01-01 00:00:00.01")
  } else {
    Timestamp.valueOf("1900-01-01 00:00:00.01")
  }
}

будет использоваться для преобразования дат, таких как "май 2018 года", в некоторые значения java.sql.Timestamp. У меня проблема в том, что по какой-то причине через следующий код

val predicate = (inv: Invoice) =>
  (inv.project.getOrElse("NULL") === prj.id.getOrElse("NULL")
    && fromDateValue.before(fromMonthYear2DBformat(Some(inv.monthYear.getOrElse("NULL").toString)))
    && toDateValue.after(fromMonthYear2DBformat(Some(inv.monthYear.getOrElse("NULL").toString))))

val projectInvoicesInTimeInterval = Await.result(
  for {
    lInvoicesOfProject <- DomInvoices.getAll(predicate)
  } yield lInvoicesOfProject,
  Duration.Inf
)

параметр mydate из fromMonthYear2DBformat получает значение: Some (Rep (OptionFold)). Я ожидал что-то вроде Some («май 2018»). Любые идеи о том, почему это происходит? Я хочу добавить, что если вместо использования

(fromDateValue.before(fromMonthYear2DBformat(Some(inv.monthYear.getOrElse("NULL").toString) )))

Я использую

(fromDateValue.before(fromMonthYear2DBformat(Some(inv.monthYear) )))

я получаю ошибку:

 Type mismatch;
 found   : slick.driver.MySQLDriver.api.Rep[Option[String]]
    (which expands to)  slick.lifted.Rep[Option[String]]
 required: String

итак, возможно, вопрос должен быть в том, как удовлетворить это требование

...