首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法将mongo整数数据序列化为对象文档中的枚举

无法将mongo整数数据序列化为对象文档中的枚举
EN

Stack Overflow用户
提问于 2021-08-16 12:33:05
回答 1查看 82关注 0票数 3

我正在尝试从Mongo DB检索文档。当不包括性别属性时,文件得到了很好的接收。但是当它被包含进来时,就会发生错误。

下面是我从Mongo检索person文档的函数

代码语言:javascript
运行
复制
private List<Person> getPersons()
{
    // Query to get person list

    // Loop through person list
    for (Person person : personList) {
        // Some condition checking
        filteredPersonList.add(person);
    }
    return filteredPersonList;
}

这是我的Person类

代码语言:javascript
运行
复制
public class Person {
  @BsonProperty("firstName")
  @JSONField("firstName")
  public String FirstName

  @BsonProperty("lastName")
  @JSONField("lastName")
  public String LastName

  @BsonProperty("gender")
  @JSONField("gender")
  public Gender Gender

  @BsonProperty("isMarried")
  @JSONField("isMarried")
  public Boolean IsMarried
}

下面是Gender属性的性别枚举

代码语言:javascript
运行
复制
@JSONType(serializeEnumAsJavaBean = true)
public enum Gender {
  Male(0),
  Female(1),
  ;
  private final int type;

  Gender (int type) {
    this.type = type;
  }

  public int getType() {
    return type;
  }
}

这是我得到的错误

代码语言:javascript
运行
复制
 org.bson.codecs.configuration.CodecConfigurationException: Failed to decode 'Person'. Decoding 'gender' errored with: readString can only be called when CurrentBSONType is STRING, not when CurrentBSONType is INT32.A custom Codec or PojoCodec may need to be explicitly configured and registered to handle this type. 
at org.bson.codecs.pojo.PojoCodecImpl.decodePropertyModel(PojoCodecImpl.java:224)
at org.bson.codecs.pojo.PojoCodecImpl.decodeProperties(PojoCodecImpl.java:197)
at org.bson.codecs.pojo.PojoCodecImpl.decode(PojoCodecImpl.java:121)
at org.bson.codecs.pojo.PojoCodecImpl.decode(PojoCodecImpl.java:125)
at org.bson.codecs.pojo.LazyPojoCodec.decode(LazyPojoCodec.java:57)
at org.bson.codecs.DecoderContext.decodeWithChildContext(DecoderContext.java:96)
at org.bson.codecs.pojo.PojoCodecImpl.decodePropertyModel(PojoCodecImpl.java:218)
    ... 58 more

在Mongo DB中,性别属性的类型是INT32。

EN

回答 1

Stack Overflow用户

发布于 2021-10-01 07:45:33

您必须在mongodb实现之后添加自定义编解码器。

看看这个

http://mongodb.github.io/mongo-java-driver/4.3/bson/codecs/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68802903

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档