У меня есть следующие классы случай:SalatDAO десериализации типизированного класса со списком
case class Network(val name : String, val mac : String)
case class Field[T](var value : T, var source : String = "")
case class Device(var _id : ObjectId = new ObjectId,
var device_type : Field[String] = Field[String](""),
var networks : Field[List[Network]] = new Field[List[Network]](List[Network]())) {
def hasMac(mac : String) : Boolean = {
networks.value.foreach { n => if(n.mac == mac) return true }
return false
}
}
Я могу сериализовать/deserialze экземпляров устройства. Однако, после того, как deserializtion метод hasMac разбился с исключением: «ClassCastException: com.mongodb.BasicDBList не может быть приведен к scala.collection.immutable.List»
Когда класс устройств определяется как этот
case class Device(var _id : ObjectId = new ObjectId,
var device_type : Field[String] = Field[String](""),
var networks : List[Network] = List[Network]()) {
def hasMac(mac : String) : Boolean = {
networks.foreach { n => if(n.mac == mac) return true }
return false
}
}
У меня ошибка, и все работает так, как ожидалось.
Я видел, что salat не поддерживает Option [List], но здесь у меня есть поле [Список]. я не мог понять из этой страницы, если намаз поддерживает этот вид типа: https://github.com/novus/salat/wiki/SupportedTypes
Aliza
Что заставляет вас думать Поле [String] не получает сериализацию должным образом? В документе в БД у меня есть «device_type»: { «value»: «mobile», «source»: «x1» }, поэтому он получил серллизацию должным образом. Проблема заключается в поле [Список [Сеть]] – Aliza
Отредактированный оригинальный ответ – prasinous