【问题标题】:Morphia: retrieve MongoDb document as java objectMorphia:将 MongoDb 文档检索为 java 对象
【发布时间】:2020-03-12 10:49:18
【问题描述】:

我可以使用 Morphia 轻松地将 java 对象插入 MongoDb 数据库。现在,我想检索文档并将其映射为 java 对象。 MongoDB文档是这样的:

{
    "Name":"XXX",
    "Fingertemplate":{ "immutable" : { "size" : { "x" : 388 , "y" : 374} , "minutiae" : [ ........

我的示例代码如下所示:

@Entity(value="fingertable", noClassnameStored=true)
public class RecordFingerTemplate {
    @Id private ObjectId id;
    @Property private String name;
    @Embedded private FingerprintTemplate fingertemp;
    public RecordFingerTemplate (){

    }
    public RecordFingerTemplate(String name)
    {
        this.name=name;
    }
    public ObjectId getId() {
        return id;
    }

    protected void setId( final ObjectId id ) {
        this.id = id;
    }
    public FingerprintTemplate getTemplate(){
        return fingertemp;
    }
    public void setTemplate(FingerprintTemplate template){
        this.fingertemp=fingertemp;
    }
}

并将对象保存到我正在使用的数据库中 datastore.save(Object) ,它工作得很好 现在我想检索文档并获取指纹模板对象。

List<RecordFingerTemplate> result=datastore.createQuery(RecordFingerTemplate.class)
                .field("name").containsIgnoreCase("john")
                .order("name")
                .asList();

错误:** org.mongodb.morphia.mapping.MappingException:错误设置 来自 ImmutableTemplate.size 的转换器 (PassthroughConverter) 的值 到 {"x": 388, "y.........**

【问题讨论】:

    标签: java mongodb morphia


    【解决方案1】:

    尝试将@Embedded 注释移动/添加到FingerprintTemplate 并在您的类型上显式调用map()。惰性映射中存在一些空白,恐怕您可能会遇到这种情况。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-28
      • 1970-01-01
      相关资源
      最近更新 更多