我该如何指定我的存储库要使用的集合?
我的配置:
<!-- Database -->
<mongo:mongo id="mongoDb" host="localhost" port="27017"/>
<mongo:db-factory id="mongoDbFactory" mongo-ref="mongoDb" dbname="test"/>
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg name="mongoDbFactory" ref="mongoDbFactory"/>
</bean>
<mongo:repositories base-package="de.cochu.springtest.mongodb.repositories"/>
我的文档:
@Document
public class User {
@Id String id;
@Indexed String email;
...getters and setters omitted...
}
用户集合的存储库(位于...mongodb.repositories包内)。 我从CrudRepository扩展:
public interface UserRepository extends CrudRepository<User, String>{
User findByEmail(String email);
}
最后,在我的Spring Servlet中,我希望使用UserRepository的控制器:
@Controller
public class MyController {
@Autowire UserRepository repo;
@RequestMapping("/test.html")
public String something(HttpServletRequest request) {
User u = userRepository.findByEmail(request.getParameter("email"));
...
}
}
我通过控制台设置了一些示例用户,mongoTemplate.getCollection("users").count() 运行正常。但是仓库没有查找到任何内容。
... UserRepository 如何知道我想要在“用户”集合中搜索用户?/这是否是使用存储库的正确方式?
... Intellij IDEA 无法识别 UserRepository 的自动装配。虽然它显示了一个错误,但它编译并不会抛出异常。我能做些什么吗?