У меня есть данные, возвращаясь из MongoDB, который выглядит следующим образом:Как указать модель DAO для вложенного списка смешанного типа?
> db.foo.findOne()
[
{
"_id" : "some string",
"bar" : [
[
14960265,
0.5454545454545454
],
[
30680,
0.36363636363636365
],
[
12852625,
0.09090909090909091
]
],
}
]
Свойство bar
содержит список неизвестного размера, каждый элемент которого представляет собой список длины два содержащих Int и Double. В Scala я бы представлял это как List [(Int, Double)].
Как написать модель для этой структуры для использования с Salat?
Salat не делает кортежей, поэтому я попытался:
case class FooEntry(a: Int, b: Double)
case class Foo(_id: String, bar: List[FooEntry])
но получил:
java.lang.IllegalArgumentException: BasicBSONList может работать только с цифровыми клавишами, а не: [а ]
попытался также:
case class Foo(_id: String, sps: List[Any])
но получили:
java.lang.ClassCastException: com.mongodb.BasicDBList не может быть брошен к scala.collection.immutable.List
Очевидно, что эти данные могут быть сохранены в лучшая форма, с объектом вместо массивов длины-два. Но, учитывая то, что у меня есть, есть ли хороший способ использовать Salat для десериализации? Благодаря!
Большое спасибо за объяснение и указатели на альтернативы. Я согласен, что члены массива будут лучше представлены как объекты, чем массивы. – mrjf