【问题标题】:Type mismatch Astyanax KeySerializer in ScalaScala中的类型不匹配Astyanax KeySerializer
【发布时间】:2013-04-05 04:58:01
【问题描述】:

我正在尝试执行以下操作,但由于某些原因,由于 KeySerializer 的类型不匹配,我的代码无法编译。

implicit val keyspace = ConnectionPool.bigdataKeyspace
  implicit val CF_PAST = ColumnFamily.newColumnFamily(CF, LongSerializer.get, StringSerializer.get)

  def update(model: M) = {
    val batch = keyspace.prepareMutationBatch().setConsistencyLevel(ConnectionPool.CL_WRITE)
    val rk = model.rowkey
    try {

        batch.withRow(CF_PAST, rk)
        .putColumnIfNotNull(model.epoch, model.value, model.ttl)

      batch.execute
      Option(model)

    } catch {
      case e: Exception =>
        logger.warn("Unable to insert past model", e)
        None
    }
  }

编译错误如下"

error: type mismatch;  found   
: com.netflix.astyanax.model.ColumnFamily[Long,String]  required: com.netflix.astyanax.model.ColumnFamily[Comparable[_ >: 
String with Long <: Comparable[_ >: String with Long <: 
Comparable[_ >: String with Long <: 
java.io.Serializable] with java.io.Serializable] with java.io.Serializable] with java.io.Serializable,String] Note: 
Long <: Comparable[_ >: String with Long <: Comparable[_ >: 
String with Long <: Comparable[_ >: String with Long <: 
java.io.Serializable] with java.io.Serializable] with java.io.Serializable] with java.io.Serializable, but Java-defined class ColumnFamily is invariant in type K. 
You may wish to investigate a wildcard type such as `_ <: 
Comparable[_ >: String with Long <: Comparable[_ >: 
String with Long <: Comparable[_ >: String with Long <: java.io.Serializable] with
 java.io.Serializable] with java.io.Serializable] with java.io.Serializable`. 
(SLS 3.2.10)
            batch.withRow(CF_PAST, rk)

这似乎只发生在 Scala 中,KeySerializers 不是字符串,ColumnSerializers 其他类型似乎工作正常?有解决办法吗?

【问题讨论】:

    标签: scala generics astyanax


    【解决方案1】:

    啊,我意识到 KeySerializer 对于这种情况是不正确的。我需要设置 ColumnSerializer:

      implicit val CF_PAST = ColumnFamily.newColumnFamily(CF, StringSerializer.get, LongSerializer.get)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-27
      • 1970-01-01
      • 1970-01-01
      • 2019-04-15
      • 1970-01-01
      • 1970-01-01
      • 2016-07-03
      • 2017-02-25
      相关资源
      最近更新 更多