Cette question est liée à Un autre . J'essaie également de trier sur une requête avec une jointeLet mais dans Slick 3.0.0. Et comme le report d'option est automatiquement soulevé, comment ferais-je exactement la même chose?:
def list(filter: String, orderBy: Int):Future[Seq[(Computer, Option[Company])]] = { val initialQuery = for { (computer, company) <- Computer.filter(_.name like filter) leftJoin Company on (_.companyId === _.id) } yield (computer, company) val sortedQuery = orderBy match { case 2 => initialQuery.sortBy(_._1.name) //Works ok, column from a primary table case 3 => initialQuery.sortBy(_._2.map(_.name)) //could not find implicit value for parameter ol: slick.lifted.OptionLift[slick.lifted.ColumnOrdered[String],slick.lifted.Rep[Option[QO]]] } db.run(sortedQuery.result) }
4 Réponses :
Êtes-vous sûr de copier le code correct? manquant a ")" p> doit être p>
Je suppose que cette parenthèse manquante n'est qu'une faute de frappe. J'ai eu ce problème récemment lorsque je spécifiais la direction de tri au mauvais endroit, à l'aide de votre exemple: Il devrait être: p>
Merci d'avoir répondu, mais oui c'était juste une faute de frappe.
Vous pouvez mettre les champs dans le jeu de résultats.
Par exemple:
J'ai aussi eu ce problème. J'avais une joinget et je veux commander sur une colonne booléenne. Vous devez décider lorsque sa jointure est vide quelle valeur vous voulez le remplacer.
Par exemple: P>
initialQuery.sortBy(_._2.map(_.name).getOrElse(""))