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

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

  • Java类可以很容易地转换成实体。 对于实体转换,基本要求是 - 无参数构造函数 注解 在这里,我们将学习如何通过示例,学习将常规Java类转换为实体类 - 简单的一个学生类(Student),代码如下 - 上面的类是一个常规的java类,有三个属性: , 和 。要将此类转换为实体,请在此类中添加和注解。 - 这是一个标记注释,表明这个类是一个实体。这个注释必须放在类名称上。 - 此注释位于持有持