使用distinctOn的通用查询

时间:2018-12-10 16:34:50

标签: scala slick

我想使用表上的distontOn进行通用的平滑查询,以计算列中的不同元素。

def countDistinct(table: TableQuery[_], column: Rep[_]): DBIO[Int] =
  table.distinctOn(_ => column).length.result

上面的代码由于以下原因而无法编译:

No matching Shape found.
[error] Slick does not know how to map the given types.
[error] Possible causes: T in Table[T] does not match your * projection,
[error]  you use an unsupported type in a Query (e.g. scala List),
[error]  or you forgot to import a driver api into scope.
[error]   Required level: slick.lifted.FlatShapeLevel
[error]      Source type: slick.lifted.Rep[_]
[error]    Unpacked type: T
[error]      Packed type: Any
[error]     table.distinctOn(_ => column).length.result

FlatShapeLevel而不是Rep[_]也不起作用。我正在使用光滑3。

1 个答案:

答案 0 :(得分:1)

distinctOn由于无法正确投影到特定字段/列而无法在Slick中正常工作。 bug于5年前提出,令人惊讶的是尚未解决。