2016-07-27 2 views
1

Привет, я хотел бы сериализовать/deserealise для DBObject на карте с перечислением в качестве ключа с помощью salat.salat serialize Map [Enum, Boolean] type

object MyEnum extends Enumeration { 
    val VAL_ONE, VAL_TWO = Value 
} 
case class CanBeStored(a:Enumeration.Value) 

case class CanNotBeStored(a:Map[Enumeration.Value,Boolean]) 
// Produces exception[[ClassCastException: com.mongodb.BasicDBObject cannot be cast to scala.collection.immutable.Map]] 

Как я понял, использование текущей версии невозможно. https://groups.google.com/forum/#!topic/scala-salat/s3Q548NM8yc

Возможно, существует какой-то круглый способ сделать это? Реальная проблема заключается в том, что у меня довольно глубокая вложенная модель класса case, в которой описывается моя монгольская датамодель, и я не могу просто изменить сериализацию на пользовательскую реализацию.

Может быть, я могу построить какой-то пользовательский трансформатор для Map [MyEnum.Value, Boolean], но как?

ответ

1

Да, вы можете реализовать пользовательские трансформаторы, которые могли бы преобразовывать ключи String, хранящиеся в mongo, в объекты перечисления.

См: How to customize serialization behavior without annotations in Salat?

+0

Спасибо, я решил осуществить свой собственный намаз, как библиотеки, но на макросах: https://github.com/martende/mondao – Oleg