В последней версии phantom (2.42.0) и scala (2.12.0-RC2) для параметра ev не найдено неявное: ничего при запросе к базе данных - PullRequest
1 голос
/ 15 октября 2019

Я обновляюсь до последней версии 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это должно автоматически разрешитьсяДанные о мяче, но он выбрасывает ошибку, неявные не найдены.

...