对象字段的Morphia Mapper异常

时间:2017-11-02 08:15:58

标签: java java-8 jackson morphia mapper

这是我收到的错误java.lang.ClassCastException:java.lang.Integer无法强制转换为com.mongodb.DBObject

这是我的POJO

@Entity("cars")
@Getter
@Setter
public class Car {
  @Id
  private ObjectId id;    

  private String defaultChoice;    

  private Object input;
}

我能够使用带有json的morphia将此保存在mongo的汽车收藏中

{
  "defaultChoice": "sampleChoice",
  "input": 432
}

在mongo中,字段输入以类型int32

保存

当我尝试使用morphia检索数据时发生异常。它无法使用Object作为类型映射/反序列化字段。我尝试将其更改为Integer input。它奏效了。我想尝试将此字段保留为对象(如果可能)

有没有办法解决这个问题?可以写一个自定义映射器吗?

1 个答案:

答案 0 :(得分:0)

MongoDB最佳实践是对集合中的同一字段使用相同的字段类型。所以Morphia的设计就是采用这种方法。正如其他人所说,你应该在这个字段中使用Integer,但请注意你可以将其他java类作为子文档嵌入Morphia。