如何将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");
}