Я действительно хочу вычислить продолжительность и отсортировать результаты по убыванию.Как найти продолжительность от startTime и endTime [DateTime] через slick
Я попытался,
db.run(totalSuccess.sortBy(ele => computeDuration(ele.startedOn, ele.completedOn).desc))
private def computeDuration(d1: Option[DateTime], d2: Option[DateTime]) = (d1, d2) match {
case (Some(d1),Some(d2)) => new Period(d1, d2, PeriodType.hours())
case _ => None
}
Получение ошибки несоответствия типов, где ele.startedOn
является Rep[Option[DateTime]
и computeDuration
ожидает Option[DateTime]
.
Будет ли это работать? или есть другой простой способ сделать это.
Нет, это не будет работать. Вы должны помнить о действиях DB IO в Slick generate SQL. Хотя API выглядит как стандартный код scala, вы не можете использовать произвольные типы, если они явно не поддерживаются Slick. В вашем случае вам нужно определить функцию Slick для вычисления интервалов, которая будет отображаться в исходной SQL-функции. Можете ли вы опубликовать полный образец кода, который компилируется? – user3588254