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