首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将一个Java实体映射到Spring Data中的多个MongoDB集合?

如何将一个Java实体映射到Spring Data中的多个MongoDB集合?
EN

Stack Overflow用户
提问于 2018-09-12 03:26:56
回答 1查看 5.1K关注 0票数 0

目前,我们正在寻找一种解决方案来同时将以下User实体保存到多个MongoDB集合中(即db_usersdb_users_legacy)。这两个集合位于同一个数据库中。

请不要问我为什么我需要保存在两个集合中。这是一种业务需求。

代码语言:javascript
复制
@Document(collection = "db_users")
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {

    @Id
    private String id;
    private String name;
    private String website;
    private String name;
    private String email;

}

我的SpringBoot应用程序配置是这样的;

代码语言:javascript
复制
@Configuration
public class ApplicationConfig {

    @Bean
    public MongoTemplate mongoTemplate(MongoDbFactory factory){
        MongoTemplate template = new MongoTemplate(factory);
        template.setWriteConcern(WriteConcern.ACKNOWLEDGED);
        retu,rn template;
    }

}

目前,我的存储库如下所示。而且保存的效果非常好。如何在两个不同的集合中使用相同的文档?

代码语言:javascript
复制
@Repository
public class UserRepositoryImpl implements UserRepository {

    private MongoTemplate mongoTemplate;

    public UserRepositoryImpl(MongoTemplate mongoTemplate) {
        this.mongoTemplate = mongoTemplate;
    }

    @Override
    public void save(User user) {
        mongoTemplate.save(user);
    }

}

有没有人能建议一下解决这个问题的最佳方案?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-12 04:11:52

我建议使用MongoTemplate的other overloaded save method

代码语言:javascript
复制
@Override
public void save(User user) {
    mongoTemplate.save(user, "db_users");
    mongoTemplate.save(user, "db_users_legacy");
}

这可用于将同一对象保存到多个集合中。从文档中,

您可以通过使用@Document注释提供一个不同的集合名称来自定义它。您还可以通过提供自己的集合名称作为所选MongoTemplate方法调用的最后一个参数来覆盖集合名称。

因此,在@Document中专门提供的集合名称并不重要,您始终可以使用MongoTemplate覆盖它。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52282952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档