gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 12:48:55 25 4
gpt4 key购买 nike

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

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

@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 的意外集合中,作为实体接口(interface),而不是写入名为 event_handlers 的预期集合中>,此外,复合键不起作用,因为它已与始终为空的正确集合关联。

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

> show collections
event_handlers
handler
system.indexes
>

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

谢谢

最佳答案

存储的集合对象由您配置存储库的域类型决定。因此,如果您使用 @Document 注释 Handler,您应该会看到它按预期工作。

它的工作原理是允许人们将类型层次结构的对象存储在单个集合中以允许多态查询。如果您不需要,可以采用的方法是每个具体域类型的存储库接口(interface)。

关于java - spring-data-mongodb 实体实现接口(interface)创建错误的集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24408887/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com