jde*_*lop 9 enums scala morphia
我需要在Morphia中存储Scala类.除非我尝试存储_ <:枚举的集合,否则它会很好用
Morphia抱怨它没有这种类型的序列化器,我想知道如何提供一个.现在我将集合类型更改为Seq [String],并在集合中的每个项目上调用toString来填充它.
这很好,但我不确定这是否正确.
这个问题对于 MongoDB 顶部的几个可用抽象层来说很常见。这一切都回到了一个基本原因:json/bson 中没有等效的枚举。例如萨拉特也有同样的问题。
事实上,MongoDB Java 驱动程序不支持枚举,您可以在此处进行的讨论中阅读: https: //jira.mongodb.org/browse/JAVA-268,您可以在其中看到问题仍然存在。我见过的大多数将 MongoDB 与 Java 结合使用的框架都没有实现像这个这样的低级功能。我认为这个选择很有意义,因为它们让您选择如何处理低级驱动程序未处理的数据结构,而不是强加您如何去做。
总的来说,我觉得缺乏支持不是来自技术限制,而是来自设计选择。对于枚举,有多种方法可以将它们与其优缺点进行映射,而对于其他数据类型可能更简单。我不详细了解 MongoDB Java 驱动程序,但我想支持多种“模式”需要一些重构(也许这就是他们谈论新版本序列化的原因?)
这是我正在考虑的两个策略:
总而言之,在本机对象和 MongoDB 之间添加中间数据结构没有任何问题。Salat 通过 CustomTransformers 支持它,在 Morphia 上也许你需要明确地进行转换。大胆试试吧。