akka/akka-core

Persistence with Jackson trying to cast all Map keys to String

オープン

#28,566 opened on 2020/02/04

 (6 件のコメント) (2 件のリアクション) (0 人の担当者)Scala (3,547 件のフォーク)batch import
1 - triagedhelp wantedt:docst:serialization

Repository metrics

Stars
 (13,277 個のスター)
PR merge metrics
 (平均マージ 8d 19h) (30d で 10 merged PRs)

説明

scalaVersion "2.13.1" akkaVersion = "2.6.1"

akka {
  actor {
    serializers {
      jackson-json = "akka.serialization.jackson.JacksonJsonSerializer"
      jackson-cbor = "akka.serialization.jackson.JacksonCborSerializer"
    }
    serialization-bindings {
      "xxx.CborSerializable" = jackson-cbor
    }
  }
}
trait CborSerializable

final case class State(data:Map[Long,List[String]]) extends CborSerializable

// persist something with typed persistent actor.  eg. 42 -> List() 
// after snapshot recovery 

state.data.get(42) // should be Some, but it is None

state.data.find(_._1 == 42) // throws ex

Exception is

class java.lang.String cannot be cast to class java.lang.Long (java.lang.String and java.lang.Long are in module java.base of loader 'bootstrap') java.lang.ClassCastException: class java.lang.String cannot be cast to class java.lang.Long (java.lang.String and java.lang.Long are in module java.base of loader 'bootstrap')

コントリビューターガイド