![](/img/trans.png)
[英]How to set @TextIndex name in an entity with 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.