java - Morphia:将 MongoDb 文档检索为 java 对象

标签 java mongodb morphia

我可以使用 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();

Error: ** org.mongodb.morphia.mapping.MappingException:Error setting value from converter (PassthroughConverter) for ImmutableTemplate.size to {"x": 388, "y.........**

最佳答案

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

关于java - Morphia:将 MongoDb 文档检索为 java 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60652523/

相关文章:

java - 如何在没有互联网连接的情况下获取网络提供的日期和时间?

java - 了解 spring 4 (spring-context) maven 依赖

java - getChildNodes() 返回的 DOM NodeList 的顺序

java - 带有 or 运算符的 Morphia 查询

java - 使用 mongodb 查找,同时使用 java 中的吗啡迭代列表

java - 如何在 java 中将 xml 分块为多个部分?

r - mongolite 的身份验证错误

mongodb - 在 rust mongo 中生成 ObjectId

java - 嵌套 Json 聚合

java - MongoDB/Morphia 对多字段文档的更新操作