Я пытаюсь отфильтровать таблицу с параметрами, которые могут быть необязательными. С slick 2.1 это сработало, но когда я перехожу к версии 3.0, больше не работает, ошибка: «не удается разрешить символ & &», когда я вызываю функцию «уменьшить».Динамические условия запроса Slick 3.0
Я был бы признателен за любую помощь .. спасибо
Это код:
def getAll(params : ClienteSearchParameters) : DBIOAction[Iterable[Cliente], NoStream, Effect.Read] = {
val q = for {
(x, (y, z)) <- tabla join (tablaPersonas joinLeft tablaContactos on (_.id === _.idPersona)) on (_.idPersona === _._1.id)
if {
List(
params.nombre.map(y.nombre === _),
params.apellido.map(y.apellido === _),
params.fechaAlta.map(x.fechaAlta === _),
params.fechaRegistracion.map(x.fechaRegistracion === _)
).flatten match {
case Nil => LiteralColumn[Boolean](true)
case seq => seq.reduce(_ && _)
}
}
} yield (x, y, z)
я попробовать .. но я получаю ошибку ... «не может разрешить символ &&» ... –
Я нашел ошибку, оба решения работают, проблема в том, что оба «y.apellido» и «x.fechaAlta» являются опциями colums, тогда символ && не найден. Если я использую метод «getOrElse», он работает хорошо, но не уверен, что это лучший способ. –
Вы можете попробовать что-то вроде этого: params.apellido.flatMap (v => y.apellido.map (v === y)), –