我正在尝试使用scala-cass来读取 cassandra 并将结果集转换为使用resultSet.as[CaseClass]
. 这在运行以下命令时效果很好。
import com.weather.scalacass.syntax._
case class TestTable(id: String, data1: Int, data2: Long)
val resultSet = session.execute(s"select * from test.testTable limit 10")
resultSet.one.as[TestTable]
现在我试图使它更通用,但我无法为泛型类找到合适的类型约束。
import com.weather.scalacass.syntax._
case class TestTable(id: String, data1: Int, data2: Long)
abstract class GenericReader[T] {
val table: String
val keyspace: String
def getRows(session: Session): T = {
val resultSet = session.execute(s"select * from $keyspace.$table limit 10")
resultSet.one.as[T]
}
}
我用所需的案例类实现这个类,并尝试在创建的对象上调用 getRows。
object TestTable extends GenericReader[TestTable] {
val keyspace = "test"
val table = "TestTable"
}
TestTable.getRows(session)
这会引发异常could not find implicit value for parameter ccd: com.weather.scalacass.CCCassFormatDecoder[T]
。
我正在尝试向 GenericReader 添加类型约束,以确保隐式转换能够正常工作。但是,我找不到合适的类型。我正在尝试通读 scala-cass 以找到适当的约束,但到目前为止我还没有运气。
我也很乐意使用任何其他可以实现这一目标的库。