地图类型的数据的MappingException

时间:2018-12-10 11:53:17

标签: couchbase spring-data-couchbase

在将地图类型数据保存到couchBase时,我遇到了异常

  

起因:org.springframework.data.mapping.MappingException:找不到类型java.lang.Object的PersistentEntity!

我已经在DataModel中拍摄了一张地图

@Data
public class test { 
  private Map<String,Object> testMap;
 }

我发现this并重写了ouchBase配置,以在对象类型为诸如此类的情况下进行customMapping

protected <R> R read(final TypeInformation<R> type, final CouchbaseDocument source,
        final Object parent) {
      if (Object.class == typeMapper.readType(source, type).getType()) {
        return (R) source.export();
      } else {
        return super.read(type, source, parent);
      }
    } 

它适用于

之类的请求
{  
   "dummyMap":{  
      "key1":"val1",
      "key2":"val2"
   }
}

但因

而失败
{  
   "dummyMap":{  
      "key1":"val1",
      "key2":"val2",
      "objects":[  
         {  
            "key1":"val1",
            "key2":"val2"
         }
      ]
   }
}

例外

  

原因:java.lang.IllegalArgumentException:基本类型不能为null!

我想这是因为数组。请让我知道我在做什么错。

我正在使用spring-data-couchbase 2.0.4.RELEASE版本。

1 个答案:

答案 0 :(得分:0)

嗨,请使用下面的代码,因为类型为空并且沙发基映射转换器无法读取文档 它必须工作。

@Override
    @SuppressWarnings("unchecked")
    protected <R> R read(final TypeInformation<R> type, final CouchbaseDocument source, final Object parent) {
        if (type == null)
            return (R) source.export();
        if (Object.class == typeMapper.readType(source, type).getType()) {
            return (R) source.export();
        } else {
            return super.read(type, source, parent);
        }
    }