Я обновляюсь до последней версии phantom-dsl 2.42.0 и scala 2.12, и в соответствии с руководством по миграции теперь мне не требуется генерировать метод fromRow (), но при запросе к базе данных я не получаю неявный параметр, найденный (время компиляции)).
Я пытался написать метод fromRow, но он все равно не работал
Мой класс case -
case class Ball(matchId: Int,
inningsid: Int,
ballNbr: Int,
timeScore: Long,
batStrikerDots: Option[Int],
batStrikerFours: Option[Int],
commFormats: Map[String, CommentaryFormats],
.......
......)
class Ball extends Table[BallData, Ball] with CassandraSession with CommentaryPrimitive {
object matchId extends IntColumn with PartitionKey {
override lazy val name = col_name
}
object inningsId extends IntColumn with PrimaryKey with ClusteringOrder with Descending {
override lazy val name = col_name
}
object ballNbr extends IntColumn with PrimaryKey with ClusteringOrder with Descending {
override lazy val name = col_name
}
object timeScore extends DateTimeColumn with PrimaryKey with ClusteringOrder with Descending {
override lazy val name = col_name
}
object commentaryFormat extends MapColumn[String, CommentaryFormats] {
override lazy val name = "comm_format"
}
............
............
}
col_name - это имена соответствующих столбцов.
, где comm_format - UDT, поэтому у меня есть CommentaryPrimitive , определенный для того, который регистрирует кодек о том, как десериализовать данные cassandra в класс дел scala, а CassandaraSession предоставляет неявное пространство ключей и сеанс.
Это мойПримитивный код для регистрации кодека -
override def cassandraType: String = {
val format_types = CassandraConnector.getSession.getCluster.getMetadata.getKeyspace("matches_data").getUserType("format_types")
val formatCodecCodec = new CommentaryCodec(TypeCodec.userType(format_types), classOf[CommentaryFormats])
CassandraConnector.registerCodec(formatCodecCodec)
format_types.toString()
}
override def asCql(value: PrimitiveType): String = ???
override def dataType: String = ???
override def serialize(obj: PrimitiveType, protocol: ProtocolVersion): ByteBuffer = ???
override def deserialize(source: ByteBuffer, protocol: ProtocolVersion): PrimitiveType = ???
, но при запросе я не могу решить эту проблему -
select.where (_. MatchId eqs matchId) (...). One() (...) -> получение объекта Ball
... -> не найдено неявно
с новой версией phantom-dslэто должно автоматически разрешитьсяДанные о мяче, но он выбрасывает ошибку, неявные не найдены.