Wie kann ich "inSet" in einer Scala Slick Abfrage negieren?

8

Ich versuche eine Slick-Abfrage mit einem negierten inSet zu erstellen, aber ich habe Probleme, die richtige Syntax herauszufinden. Ich möchte etwas wie

machen %Vor%

oder

%Vor%

von denen keiner übergibt. Ist es möglich, inSet so zu negieren, und wenn ja, wie lautet die richtige Syntax? Oder gibt es eine andere Möglichkeit, die Abfrage zu erstellen, für die das negierte inSet nicht benötigt wird? Ich benutze Slick 1.0.1, ich erwarte, dass wir im nächsten Monat auf Slick 2.0 upgraden werden. (Ich kann ein filterNot(lst.contains(_.id2)) auf die Abfrageergebnisse anwenden, anstatt ein negiertes inSet in die Abfrage einzufügen, aber dies würde die Funktion, die ich schreibe, erschweren und daher würde ich lieber ein negiertes inSet verwenden, wenn möglich. )

    
Zim-Zam O'Pootertoot 17.02.2014, 03:57
quelle

1 Antwort

10

Eins von

Query(Table1).filter(_.id1 === 1).filter(row => !(row.id2 inSet lst)).list

Query(Table1).filter(_.id1 === 1).filterNot(_.id2 inSet lst).list

In Verbindung stehende: Ссылка

Anmerkungen zur Seite: where ist veraltet. Verwenden Sie die Scala Collections-Terminologie anstelle der SQL-Terminologie. Außerdem sind Sie in der falschen Annahme, dass in Scala !(_.id2 inSet lst) auf x => !(x.id2 inSet lst) expandiert, wenn es tatsächlich zu !(x => x.id2 inSet lst) expandiert, was wenig Sinn macht.

    
cvogt 22.02.2014, 21:00
quelle

Tags und Links