【发布时间】:2016-11-08 02:37:59
【问题描述】:
我正在尝试通过 spring 框架从 mongodb 检索数据。
一开始我做了返回类型Map<String, Object>,但我决定改成User值对象。
下面是用户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
谢谢。
---- 编辑
Follow 是我的数据库配置
@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配置文件?
-
请注意,您拥有的
@Field注释是完全多余的。 -
@chrylis
@Field可以做出不同的结果吗?我已经尝试过没有它,但没有任何改变(我将该注释用于我尚未进行的进一步处理)。无论如何谢谢。 -
@Veeram 编辑了帖子。添加了我的 mongo 配置
标签: java mongodb spring-mvc spring-data value-objects