J'essaie d'utiliser les requêtes dynamiques Squeryl (0.9.4 pour scala 2.8.1) (.?
et inhibitWhen(...)
). Ils fonctionnent bien lorsque j'utilise des champs String/Int/whatever, mais semblent interférer avec la syntaxe de squeryl pour les conditions booléennes.Booléens dans les requêtes dynamiques Squeryl
En supposant que nous avons quelque part défini is_trusted: Option[Boolean]
, le code suivant
where (obj =>
obj.is_trusted === is_trusted.?
)
ne compile pas, jeter l'erreur suivante:
... type mismatch;
[error] found : org.squeryl.dsl.ast.LogicalBoolean
[error] required: org.squeryl.dsl.NonNumericalExpression[org.squeryl.PrimitiveTypeMode.BooleanType]
[error] obj.is_trusted === is_trusted.?
[error] ^
même celui-ci ne fonctionne pas, à défaut de la première condition :
where (obj =>
obj.is_trusted.inhibitWhen(is_trusted == Some(true)) and
not(obj.is_trusted).inhibitWhen(is_trusted == Some(false))
)
La seule version de travail utilise le not
comme un indice pour le compilateur:
not(not(obj.is_trusted)).inhibitWhen(is_trusted != Some(true)) and
not(obj.is_trusted).inhibitWhen(is_trusted != Some(false))
est-il un moyen plus sain d'esprit pour faire des requêtes dynamiques avec booléens?
Cela semble fonctionner, merci! – Digal
Heureux de vous aider. Si vous avez des problèmes à l'avenir, vous pouvez les publier sur https://groups.google.com/forum/#!forum/squeryl. Max, le créateur de Squeryl, a tendance à réagir assez rapidement. –