У меня следующий код, 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
итак, возможно, вопрос должен быть в том, как удовлетворить это требование