SQL 'NULL' 在第 1 列读取(JDBC 类型 null),但映射到非 Option 类型



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

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 类型空(,但映射到 非选项类型;在此处使用选项。请注意,JDBC 列索引是 基于 1。 doobie.util.invariant$NonNullableColumnRead: SQLNULLread 在第 1 列(JDBC 类型空(,但映射到非选项类型;用 在这里选择。请注意,JDBC 列索引是从 1 开始的。

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

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

所以问题就来了query[SchemaInfo]由于记录可能不存在,因此应将其映射到query[Option[SchemaInfo]].unique

相关内容

最新更新