Morphia 1.3类映射代码迁移至2.0出现类型不匹配如何解决
Morphia 2.x 类映射代码适配方案
报错原因
Morphia 2.x 对Mapper.map()方法的返回值做了改动:旧版本中该方法返回Morphia/Mapper实例本身支持链式调用,2.x版本调整为返回映射完成的List<MappedClass>结果。你原有fold逻辑中直接将mapper.map(curr)的返回值作为累加器结果返回,导致List<MappedClass>和预期的Mapper类型不匹配,触发编译错误。
适配方案
方案1:保留fold遍历逻辑
调整fold闭包内的返回值,执行映射操作后返回累加的Mapper实例即可:
Mapper mapper = datastore.getMapper(); List.of(A.class, B.class, C.class, D.class) .foldLeft(mapper, (acc, curr) -> { acc.map(curr); return acc; });
方案2:使用批量映射方法(更简洁)
Mapper本身提供了支持传入多个Class的重载方法,无需手动遍历:
Mapper mapper = datastore.getMapper(); mapper.map(A.class, B.class, C.class, D.class);
内容的提问来源于stack exchange,提问作者nicholas
相关产品推荐
相关产品推荐

