【问题标题】:Spring Data MongoDB: set repository collection?Spring Data MongoDB:设置存储库集合?
【发布时间】:2012-05-06 10:54:06
【问题描述】:

如何指定我希望我的存储库所属的集合?

我的配置:

<!-- 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);
}

最后,我想在其中使用 UserRepository 的 spring servlet 的控制器:

@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 怎么知道我要搜索集合“users”中的用户?/这是使用存储库的正确方法吗?

... Intellij IDEA 无法识别 UserRepository 的自动装配。尽管它显示错误,但它编译并不会引发异常。有什么我可以做的吗?

【问题讨论】:

    标签: spring mongodb autowired


    【解决方案1】:

    这部分文档可能有您正在寻找的答案:

    http://static.springsource.org/spring-data/data-mongodb/docs/current/reference/html/#mongo-template.save-insert.collection

    有两种方法可以管理用于对文档进行操作的集合名称。使用的默认集合名称是更改为以小写字母开头的类名称。因此 com.test.Person 类将存储在“person”集合中。您可以通过使用 @Document 注释提供不同的集合名称来自定义它。您还可以通过提供您自己的集合名称作为所选 MongoTemplate 方法调用的最后一个参数来覆盖集合名称。

    【讨论】:

    • “您还可以通过提供您自己的集合名称作为所选 MongoTemplate 方法调用的最后一个参数来覆盖集合名称”这迫使您不使用 Repository 接口,您必须为此使用 MongoTemplate ,还有其他方法可以使用 Repository 接口吗??
    • 我认为它默认尝试使用“用户”,因为您的@Document 注释类是“用户”。但听起来你的收藏是“用户”。试试@Document(collection="users") ?
    • 如果同一实体有两个不同的集合怎么办?在这种情况下可以使用 Repository 吗?
    猜你喜欢
    • 2016-12-13
    • 2015-06-18
    • 2014-03-18
    • 2021-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-19
    相关资源
    最近更新 更多