3

我想使用此查询选择最大值(表中的所有字段都不为空):

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),但映射为非 Option 类型;在这里使用选项。请注意,JDBC 列索引是从 1 开始的。doobie.util.invariant$NonNullableColumnRead:SQLNULL在第 1 列读取(JDBC 类型为 null),但映射为非 Option 类型;在这里使用选项。请注意,JDBC 列索引是从 1 开始的。

如何解决?没有羽毛笔(使用纯 doobie)相同的查询正常工作

4

1 回答 1

4

我知道您可能已经得到了答案,但我会在此处留下我的评论,以便将来对某人有所帮助。

所以问题是一致的 query[SchemaInfo] ,因为记录可能不存在,它应该映射到 query[Option[SchemaInfo]].unique

于 2020-06-18T13:53:39.920 回答