解决 org.bson.codecs.configuration.CodecConfigurationException: Can't find a codec for class XXX;

最近用spring data jpa操作mongo时进行查询操作时遇到该错误:

由于想直接获取到 实体类的迭代器(如:FindIterable<User> ) 使用了一下方法:

template.getCollection(entityInformation.getCollectionName()).find(entityInformation.getJavaType());

  出现以下错误:

org.bson.codecs.configuration.CodecConfigurationException: Can't find a codec for class com.example.tranfer.entity.User.

	at org.bson.codecs.configuration.CodecCache.getOrThrow(CodecCache.java:46)
	at org.bson.codecs.configuration.ProvidersCodecRegistry.get(ProvidersCodecRegistry.java:63)
	at org.bson.codecs.configuration.ProvidersCodecRegistry.get(ProvidersCodecRegistry.java:37)
	at com.mongodb.internal.operation.Operations.createFindOperation(Operations.java:140)

  

解决办法如下:

在自己的repository中注入Mongo转换器

  @Autowired
    MongoConverter mongoConverter;

  使用方法:

        while (iterator.hasNext()){
            Document next = iterator.next();
            User user = mongoConverter.read(User.class, next);
            users.add(user);
        }

  MongoTemplate就是这么做的

 

posted @ 2019-05-30 14:55  英长  阅读(9115)  评论(1编辑  收藏  举报