3

このクエリを使用して最大値を選択したい (テーブル内のすべてのフィールドが null ではない):

dc.run(quote {
    query[SchemaInfo]
      .filter(_.subjectName == lift(subject))
      .map(_.version)
      .max
  }).map(_.map(_ + 1).getOrElse(1))

そのテーブルが空である可能性があることはわかっているので、これを使用します: map(_.map(_ + 1).getOrElse(1))

問題は、このクエリが次のエラーを生成することです。

SQLNULLは列 1 (JDBC タイプ null) で読み取られますが、マッピングは非オプション タイプです。ここでオプションを使用します。JDBC 列のインデックスは 1 から始まることに注意してください。doobie.util.invariant$NonNullableColumnRead: SQLNULLは列 1 (JDBC タイプ null) で読み取られましたが、マッピングは非オプション タイプです。ここでオプションを使用します。JDBC 列のインデックスは 1 から始まることに注意してください。

修正方法は?クイルなしで (純粋なドゥービーを使用)、同じクエリが正しく機能します

4

1 に答える 1

4

おそらくすでに答えが出ていることは承知していますが、将来誰かに役立つことを願って、ここにコメントを残します。

query[SchemaInfo] したがって、レコードが存在しない可能性があるため、マップする必要がある ため、問題は発生して いますquery[Option[SchemaInfo]].unique

于 2020-06-18T13:53:39.920 に答える