我需要Morphia来支持java 8 Optional
的序列化。 Morphia显然不是特殊情况Optional
,默认情况下,Morphia似乎将Optional
序列化为{value: BLAH}
并删除空Optional
(因为我有dropEmpty
或其他任何配置。
当我尝试重新补充包含Optional
的{{1}}时,Morphia在映射逻辑的内容中失败并出现类强制转换异常:
enum
事实上,Morphia似乎正在丢失类型信息;当我实施自己的Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to com.mongodb.DBObject
at org.mongodb.morphia.mapping.EmbeddedMapper.fromDBObject(EmbeddedMapper.java:160)
时,TypeConverter
不包含MappedField
信息,这是我通常会查找信息的信息。相反,我必须在单独的字段中存储有关内部值的类信息,以便结果看起来像:
subClass
。
有更优雅的方式处理这个吗?这似乎是{"valueClassName" : "full.class.name" "value" : BLAH}
的一个特例(尽管这显然取决于IterableConverter
中存在的subClass
值。
为了它的价值,'升级吗啡'不是一个选择,因为无论何时我们尝试这样做都会爆发出无数的错误。这与org.mongodb.morphia版本0.108
失败了