Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将Java实体映射到Spring数据中的多个MongoDB集合?_Java_Mongodb_Spring Boot_Spring Data_Spring Data Mongodb - Fatal编程技术网

如何将Java实体映射到Spring数据中的多个MongoDB集合?

如何将Java实体映射到Spring数据中的多个MongoDB集合?,java,mongodb,spring-boot,spring-data,spring-data-mongodb,Java,Mongodb,Spring Boot,Spring Data,Spring Data Mongodb,目前,我们正在寻找一种解决方案,将以下用户实体同时保存到多个MongoDB集合中(即db\U用户和db\U用户)。两个集合位于同一数据库中 请不要问我为什么需要保存两个集合。这是一项业务需求 @Document(collection = "db_users") @Data @NoArgsConstructor @AllArgsConstructor public class User { @Id private String id; private String nam

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

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

@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应用程序配置如下:

@Configuration
public class ApplicationConfig {

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

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

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

}

有谁能建议最好的解决方法吗?

我建议使用
MongoTemplate
的另一种方法

这可用于将同一对象保存到多个集合。 根据文件

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


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

覆盖它,我建议使用
MongoTemplate
的另一个

这可用于将同一对象保存到多个集合。 根据文件

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


因此,在
@Document
中专门提供的集合名称并不重要,您可以随时使用
MongoTemplate

覆盖它,谢谢Ben的回复。这看起来是最简单的处理方法。但是我正在寻找其他的解决方案。谢谢你的回复,本。这看起来是最简单的处理方法。但他正在考虑是否有其他可行的解决方案。
@Override
public void save(User user) {
    mongoTemplate.save(user, "db_users");
    mongoTemplate.save(user, "db_users_legacy");
}