【发布时间】:2016-04-09 06:14:52
【问题描述】:
举个例子:我希望一些实体在 MongoDB 中持久化,一些在 Cassandra 中。
我的存储库接口扩展了CrudRepository。我的 Cassandra 实体有 @Table,我的 MongoDb 实体有 @Document 注释。
但是,在启动时,spring-data 会尝试创建 MyMongoObjectRepository 的实例,因此会抱怨“Cassandra 实体必须具有 @Table、@Persistent 或 @PrimaryKeyClass 注释”。
这些库如何发现它们应该实现的存储库接口,以及我如何控制它们以便它们不会尝试为不受支持的实体实现它们?
进一步的问题:如果我想在两个存储系统中存储一些实体,是否可以生成单个存储库的多个实现,或者我是否需要每个存储的接口?
编辑
进一步检查,问题似乎来自实体扫描而不是存储库扫描。两个映射器都拾取所有实体(因为它们的注释都扩展了@Persistent)。其中一个 Mongo 实体有一个 Cassandra 映射器无法处理的嵌套实体(没有任何注释)。
【问题讨论】:
-
据我了解,您可以将 mongo/cassandra 存储库放在单独的包中,并使用
@EnableMongoRepositories和@EnableJpaRepositories在适当的包中查找存储库。