当前位置: 首页 > 知识库问答 >
问题:

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

单琛
2023-03-14

我想允许用户选择他们自己的持久性技术,要做到这一点,开发人员必须编写实现给定接口的实体。

默认情况下,应用程序使用sping-data与mongob,以下是从实体提取代码:

@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数据来使用这种配置

坦克斯

共有1个答案

夏英发
2023-03-14

存储在中的集合对象由配置存储库的域类型决定。因此,如果您使用@Document注释处理程序,您应该会看到这一点与预期一样有效。

这是因为它允许人们在单个集合中存储类型层次结构的对象,以允许多态查询。如果您不需要它,那么最好是为每个具体的域类型提供一个存储库接口。

 类似资料:
  • 我很难协调以下文件中的内容: 当我尝试编译它时,我得到以下错误消息: 这很好,所以这意味着我应该能够通过明确指定财产权的对象类型来绕过这个问题? 除了现在的问题之外,当我使用编译时,我会收到以下错误消息: 似乎不管我做什么,我都会输,因为如果我小心界面上的类型规格并拼出所有内容,那么我就不能将实现专门化为只有1种类型。问题是有文件正是这样做的,如果我想让编译器找到所有的类型,因为我想尽可能显式,我

  • 每次我尝试删除或创建一些主体时,我都会在此处收到此错误日志: http://pastebin.com/nTgsNdzZ 我删除/创建我的身体,以便: 删除: 创建: 我做错了什么?我检查世界是否被锁定,然后我将创建:/

  • 我是Visual Studio Xamarin的新手。在现有的xamarin android项目中,我必须添加一个Jar文件(SDK),所以我创建了一个绑定库,但是它引发了一些错误,我试图通过使用metadata.xml来解决这些错误,其中一个如下所示: 在api.xml中搜索,我发现了以下内容: 在接口中有这样的方法: 但是,当我搜索生成的类DeviceService.cs时,我发现了以下内容:

  • 问题内容: 我正在使用Spring mvc Web应用程序,需要在其中使用Hibernate创建城镇。以下是我的城镇模型。 我还有一个名为区的实体。镇是区的一部分,一个区可以有多个镇。以下是我的区域模型: 我正在使用以下Hibernate代码保存城镇: 但是显示错误: 问题答案: 错误消息指出: 您的SQL语法有误;检查与您的MySQL服务器版本相对应的手册以获取正确的语法,以在第1行的“ des

  • 本文向大家介绍SpringDataMongoDB多文档事务的实现,包括了SpringDataMongoDB多文档事务的实现的使用技巧和注意事项,需要的朋友参考一下 一、安装MongoDB4.0.3(××) 1.1、官方安装文档 https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/ 1.2、tar.gz包下载地址 h

  • 这是我创建的mongo存储库。我访问它的方式如下: 我得到的错误- 我的想法是:@Repository应该足以将FormRepository注册为bean。然而,事实并非如此。我无法将FormRepository接口注册为bean。上面的两个文件位于同一个包中。我已经将前缀路径替换为*-但请放心*在任何地方都有相同的含义。如果有任何额外的日志,请告诉我。 编辑: 我在我的主应用程序类中添加了@En