問題タブ [doobie]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
scala - ドゥービー。.update.withGeneratedKeys() と .update.run を作成する
この質問を参照してください。
何らかの条件でエンティティを挿入したい。挿入してもしなくても構いません。条件が true の場合、エンティティが挿入されます。さまざまなテーブルに他のデータを挿入したい。次のようになります。
問題は、最初の挿入は a ですが、2 番目の挿入はそうでないため、これがコンパイルされfs2.Stream
ないことです。
に置き換えようとして_ <- inserts.reduce...
いました_ = inserts.reduce
。アプリはコンパイルできますがinserts
、2 行目では発生しません。
UPD
この問題を解決する私の可能な方法:
これは機能しますが、IMHO これはきれいではありません。それを行うより良い方法はありますか?
scala - Doobie はなぜ free モナドを使うのですか?
単純なようです
機能的な JDBC レイヤーの構築にも使用できます
postgresql - 動的変数を INSERT INTO クエリに渡すと、「$1」またはその近くで Scala doobie 構文エラーが発生する
doobieの公式チュートリアルに従っています。
これが私のコードです:
次に、テーブルを実行して作成します。
(drop, create).mapN(_ + _).transact(xa).unsafeRunSync
上記のすべてが機能し、公式ドキュメントのとおりです。
後に続く私自身のコードは次のとおりです。
私も試しました:
sql"""insert into person (id, name, age) VALUES $first, $second""".update.run.transact(xa).unsafeRunSync
ただし、どちらも私に与えます:
org.postgresql.util.PSQLException: ERROR: syntax error at or near "$1"
で動的に複数の (2 つ以上の) 値を渡す方法はINSERT INTO
?
scala - SQL `NULL` は列 1 (JDBC タイプ null) で読み取られますが、マッピングは非オプション タイプです
このクエリを使用して最大値を選択したい (テーブル内のすべてのフィールドが null ではない):
そのテーブルが空である可能性があることはわかっているので、これを使用します: map(_.map(_ + 1).getOrElse(1))
。
問題は、このクエリが次のエラーを生成することです。
SQL
NULL
は列 1 (JDBC タイプ null) で読み取られますが、マッピングは非オプション タイプです。ここでオプションを使用します。JDBC 列のインデックスは 1 から始まることに注意してください。doobie.util.invariant$NonNullableColumnRead: SQLNULL
は列 1 (JDBC タイプ null) で読み取られましたが、マッピングは非オプション タイプです。ここでオプションを使用します。JDBC 列のインデックスは 1 から始まることに注意してください。
修正方法は?クイルなしで (純粋なドゥービーを使用)、同じクエリが正しく機能します