0
我試圖通過spring框架從mongodb檢索數據。 起初我發回的類型Map<String, Object>
,但我決定改爲User
值對象。Spring數據Mongo DB檢索數據:@Document VO返回null
下面是用戶VO類
@Document(collection = "user")
public class User {
@Id
@Field(value="id")
private String id;
@Field(value="name")
private String name;
@Field(value="password")
private String password;
@Field(value="professional")
private String professional;
@Field(value="email")
private String email;
@Field(value="gravatar")
private String gravatar;
@PersistenceConstructor
public User(String id, String name, String password, String professional, String email, String gravatar) {
super();
this.id = id;
this.name = name;
this.password = password;
this.professional = professional;
this.email = email;
this.gravatar = gravatar;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getProfessional() {
return professional;
}
public void setProfessional(String professional) {
this.professional = professional;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getGravatar() {
return gravatar;
}
public void setGravatar(String gravatar) {
this.gravatar = gravatar;
}
};
和下面是@repository
檢索數據
@Repository
public class MongoMemberDao implements CommonDao<String, Map<String, Object>, Exception> {
@Autowired
MongoTemplate template;
final String COLLECTION_NAME = "user";
@SuppressWarnings("unchecked")
@Override
public Map<String, Object> read(String key) throws Exception {
Query findQuery = new Query();
findQuery.addCriteria(Criteria.where("id").is(key));
return template.findOne(findQuery, Map.class, COLLECTION_NAME);
}
public User readByDocument(String id) throws Exception {
Query findOneQuery = new Query();
findOneQuery.addCriteria(Criteria.where("id").is(id));
return template.findOne(findOneQuery, User.class, COLLECTION_NAME);
}
};
read
方法返回正常,但readByDocument
不(返回null
不User
實例)。我讀了official document。但我沒有得到任何線索。
僅供參考,參數Query
對於兩者來說都是相同的。 Query: { "id" : "system"}, Fields: null, Sort: null
- 我想知道爲什麼
readByDocument
回報null
感謝。
----編輯
遵循的是我的數據庫配置
@Configuration
public class MongoConfig extends AbstractMongoConfiguration {
private final String MONGO_URL = "127.0.0.1";
private final Integer MONGO_PORT = 27017;
@Override
protected String getDatabaseName() {
return "tfarm";
}
@Override
// @Bean
public Mongo mongo() throws Exception {
return new MongoClient(MONGO_URL, MONGO_PORT);
}
}
我加入這WebApplictaionInitializer
實現。
請問您可以添加spring配置文件嗎? – Veeram
請注意,您擁有的'@ Field'註釋完全是多餘的。 – chrylis
@chrylis'@ Field'可以做出不同的結果嗎?我已經嘗試過沒有它但沒有任何改變(我把這個註釋放到了我還沒有做的進一步過程中)。不管怎樣,謝謝。 –