2017-02-22 48 views
1

У меня есть объект ProjectCycle, сопоставленный с mongo DB collection ProjectCycle. Я пытаюсь получить 2 поля, _id и Status. Я могу получить и как следующийSpring-Mongo: отображение поля документа mongo/s в BasicDBObject/Карта BasicDBObject объекта

@Document(collection="ProjectCycle") 
public class ProjectCycle { 
    @Id 
    private String id; 
    @Field("Status") 
    private String status; 
//getters and setters 
} 

Application.java 

    Query query = new Query(); 
    query.fields().include("Status"); 
    Criteria criteria = new Criteria(); 
    criteria.and("_id").is("1000"); 
    query.addCriteria(criteria); 
    Iterable<ProjectCycle> objectList = mongoOperations.find(query, ProjectCycle.class); 
    for(ProjectCycle obj : objectList) { 
     System.out.println("_id "+obj.getId()); 
     System.out.println("status "+obj.getStatus()); 
    } 

Выход

_id 1000 
status Approved 

Но, проблема в том, когда я использовать Entity с поле private DBObject basicDbObject; вместо private String status; я получаю значение в качестве null вместо Approved

Я попытался как следующий

public class ProjectCycle { 
    @Id 
    private String id; 
    private DBObject basicDbObject; 
    //getter & setter 
} 

То, что я пытаюсь достичь этого, коллекция «ProjectCycle» очень большой и создавая POJO, соответствующий ему, является довольно сложным. Также я только читаю данные от mongoDB. Поэтому создание всего POJO - это время, потраченное впустую и утомительное.

  • Как я могу достичь сопоставления между любыми полями/полями из коллекции mongo в entity ?.
  • Можно ли создать Map<String, BasicDBObject> objectMap; для полей, возвращенных из запроса? Для этого я использую Spring-data-mongodb.

детали Версия

Spring 4.0.7.RELEASE

пружинными данных MongoDB 1.7.2.RELEASE

ответ

1

Попробуйте отображение вашего запроса, как показано ниже.

Iterable<BasicDBObject> objectList = mongoOperations.find(query, BasicDBObject.class, collectionname); 

for(BasicDBObject obj : objectList) { 
    System.out.println("_id "+obj.get("id")); 
    System.out.println("status "+obj.get("status")); 
} 
+0

Отличный !!! Это то, что я искал ... – RahulArackal