繁体   English   中英

实现接口的spring-data-mongodb实体创建错误的集合

[英]spring-data-mongodb entity implementing an interface create wrong collections

我想允许用户选择自己的持久性技术,因此开发人员必须编写实现给定接口的实体。

默认情况下,应用程序对mongodb使用spring-data,以下是从实体中提取的代码:

@Document(collection="event_handlers")
@CompoundIndexes({
  @CompoundIndex(name = "handlers_unique_idx", def = "{'eventName': 1, 'className': 1}", unique=true, sparse=true)
})
public class HandlerImpl implements Handler {
  ....
}

及其相关的存储库:

@Repository
public interface HandlerRepository extends MongoRepository<Handler, String> {
...
}

在运行集成测试时,我注意到应用程序在一个意外的集合(称为handler )中将实体写入实体界面,而不在预期的集合( event_handlers)中写入实体,此外,复合键不起作用,因为它已被关联正确的收藏集始终空着。

这是我的数据库的收集列表:

> show collections
event_handlers
handler
system.indexes
> 

如何使用spring-data来使用这种配置?

感谢名单

存储收集对象的位置取决于您配置存储库所使用的域类型。 因此,如果使用@Document注释Handler ,则应该可以按预期工作。

这可以使人们在单个集合中存储类型层次结构的对象,从而允许多态查询。 如果您不需要这样做,则可以采用每种具体域类型的存储库接口。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM