0

私はこれに何時間も費やしました。Scala で Slick を使用して PostgreSQL でかなり複雑なクエリを作成しようとしていますが、Slick は私のパラメーターを考慮しません。次のような簡単なことを試してみると:

def get(location: String) = {
  val query = sql"select * from cities_v where name = $location limit 10"
  println(query.toString)
}

出力は次のようになります。

SQLActionBuilder(Vector(select * from cities_v where name = ? limit 10),<function2>)

代わりに、リテラル挿入を試します。

def get(location: String) = {
  val query = sql"select * from cities_v where name = #$location limit 10"
  println(query.toString)
}

出力は次のようになります。

SQLActionBuilder(Vector(select * from cities_v where name = , ville,  limit 10),<function2>

Slick は、次のように、クエリ内の唯一の引数であっても、リテラル引数がどこに配置されていても、常にコンマを追加します。

sql"#$q"

今、私が望んでいるのは、Postgres 内での計算と関数呼び出しを使用して、より複雑なクエリを作成することです。しかし、Slick が私の変数を一切使用させてくれないので、どこにもたどり着けません。

Slickはそれらをすべて無視するようで、引数をコンマで置き換えるかGetResultコンマで囲み、すべてのクエリを無効にします。サニタイズを提供しないため、あまり良くないことを付け加えておきます。非同期なので Slick を使い続けたいと思っていますが、ここからどこへ行くべきかわかりません。StatementParameters?#$

によると、これらは私のバージョン番号ですbuild.sbt

"postgresql"         %  "postgresql"           % "9.1-901-1.jdbc4",
"com.typesafe.slick" %  "slick_2.12"           % "3.2.3",

私は何を間違っていますか?

4

1 に答える 1