Spring-data-mongo无法使用构造函数实例化java.util.List

2024-03-27

Using spring-data-mongodb-1.5.4 and mongodb-driver-3.4.2

我有课Hotel

    public class Hotel {

        private String name;
        private int pricePerNight;
        private Address address;
        private List<Review> reviews;
//getter, setter, default constructor, parameterized constructor 

Review班级 :

public class Review {

    private int rating;
    private String description;
    private User user;
    private boolean isApproved;
 //getter, setter, default constructor, parameterized constructor 

当我打电话时Aggregation.unwind("reviews");它抛出

org.springframework.data.mapping.model.MappingInstantiationException: 无法使用构造函数 NO_CONSTRUCTOR 实例化 java.util.List 有参数

UnwindOperation unwindOperation = Aggregation.unwind("reviews");
Aggregation aggregation = Aggregation.newAggregation(unwindOperation);
AggregationResults<Hotel> results=mongoOperations.aggregate(aggregation,"hotel", Hotel.class);

I see 这个问题 https://stackoverflow.com/questions/26361297/why-is-spring-data-mongodb-unable-to-instantiate-this-nested-type-structure但对我没有帮助。

如何解决这个问题?


当你$unwind reviews字段,查询的返回 json 结构与您的不匹配Hotel不再上课了。因为$unwind操作使reviews子对象而不是列表。如果您在 robomongo 或其他一些工具中尝试查询,您可以看到您的返回对象是这样的

{
  "_id" : ObjectId("59b519d72f9e340bcc830cb3"),
  "id" : "59b23c39c70ff63135f76b14",
  "name" : "Signature",
  "reviews" : {
    "id" : 1,
    "userName" : "Salman",
    "rating" : 8,
    "approved" : true
  }
}

所以你应该使用另一个类而不是Hotellike UnwindedHotel

public class UnwindedHotel {

    private String name;
    private int pricePerNight;
    private Address address;
    private Review reviews;
}

UnwindOperation unwindOperation = Aggregation.unwind("reviews");
Aggregation aggregation = Aggregation.newAggregation(unwindOperation);
AggregationResults<UnwindedHotel> results=mongoOperations.aggregate(aggregation,"hotel", UnwindedHotel.class);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring-data-mongo无法使用构造函数实例化java.util.List 的相关文章

  • 如何在数据库中对 (Java) 枚举进行建模(使用 SQL92)

    您好 我正在使用名为 性别 的列对实体进行建模 在应用程序代码中 性别应该是一个 Java 枚举类型 有 2 个值 男性和女性 知道作为数据类型的枚举不是通用 SQL 语言 92 的一部分 您将如何建模它 数据模型必须是可移植的 以便由多个
  • java中队列的实现

    在 Java 中实现队列是一个非常常见的面试问题 我在网上冲浪 看到了许多实现 他们做了一些奇特的事情 比如实现队列接口和编写自己的addLast and removeFirst 方法 我的问题是我不能使用LinkedList 类并使用其预
  • Maven 目标的默认阶段?

    据我了解 在 Maven 中 插件目标可以附加到生命周期阶段 如果没有定义 默认阶段是什么 根据我的经验 这取决于插件的目标 例如 组装 单个 http maven apache org plugins maven assembly plu
  • 通过 JNI 从 Applet 调用 DLL

    我有一个 概念验证 的作品 它跨越了一些不熟悉的领域 我的任务是将 EFTPOS 机器连接到在内联网浏览器中作为小程序运行的应用程序 我暂时忽略了 EFTPOS dll 并用我选择的语言 Delphi 创建了一个简单的 JNI 修饰的 DL
  • Hystrix是否可以订阅CircuitBreaker开启事件?

    对于单元测试 我希望能够订阅 Hystrix 事件 特别是在断路器打开或关闭时发生事件 我四处寻找示例 似乎解决方法是利用指标流并监视断路器标志 由于 Hystrix 是基于 RxJava 构建的 我认为应该在某个地方有一个事件订阅接口 在
  • 如何获取 Android 中临时文件的文件大小?

    如果我使用 openFileOutput 创建并写入临时文件 写入完成后如何获取文件大小 我希望这可以帮助你 File file new File selectedPath int file size Integer parseInt St
  • Hibernate @OneToMany 注释到底是如何工作的?

    我对 Hibernate 还很陌生 我正在通过教程学习它 我在理解到底如何一对多注释作品 所以我有这两个实体类 Student代表一个学生并且Guide代表指导学生的人 因此 每个学生都与一名向导相关联 但一名向导可以跟随多个学生 我想要一
  • 如何在 Java 中创建要打印到 JFrame 的 JLabels 数组

    我正在尝试制作一系列标签 每个标签都有一个来自函数的不同值 我不知道要使用的标签的确切数量 我的意思是可以打印任意数量的值 请帮我做这件事 很简单 只需一个方法返回一个数组或一些 JLabels 集合 并将它们全部添加到您的 JCompon
  • 在 netBeans 中运行程序时,字体看起来非常奇怪

    我在我的新 MacBook M1 上设置了 netBeans 和 SceneBuilder 除了运行程序时的字体外 一切正常 它看起来像这样 我不知道为什么 按钮应显示 Click me 标签应显示 Hello 我收到的错误消息是 M rz
  • 为什么 RMI 注册表忽略 java.rmi.server.codebase 属性

    我正在运行 java RMI 的 Hello World 示例 1 我在空文件夹中运行注册表 motta motta laptop tmp rmiregistry 2 我启动 HTTP 服务器以在运行时检索类 下载文件夹包含客户端 服务器的
  • 无法仅在控制台中启动 androidstudio

    你好 我的问题是下一个 我下载了Android Studio如果我去 路径 android studio bin 我执行studio sh 我收到以下错误 No JDK found Please validate either STUDIO
  • $lookup结果中的$match

    我有下一个蒙戈代码 db users aggregate match and UserName eq administrator Company CompanyName eq test lookup from companies local
  • Java 8根据Map属性过滤Map对象列表以删除一些重复项

    Have a List
  • 如何在 MongoDB v3.0.5 中创建用户

    我需要在 mongodb 中为我的数据库创建一个用户 但似乎我无法让它工作 我已经在我的 Windows 7 机器上安装了 mongoDb v3 0 5 根据本文 https docs mongodb org v3 0 tutorial a
  • java中wav文件转换为字节数组

    我的项目是 阿塞拜疆语音的语音识别 我必须编写一个程序来转换wav文件到字节数组 如何将音频文件转换为byte 基本上如第一个答案中的片段所描述 但不是BufferedInputStream use AudioSystem getAudio
  • Jenkins 管道和 java.nio.file.* 方法的问题

    我正在尝试使用 java nio file 中的方法在 Jenkins 管道中执行一些基本文件操作 无论代码存在于哪个节点块中 代码都在主节点上执行 在管道中 我已经验证了各个节点块都是正确的 它们唯一地标识了特定的节点 但是 pathEx
  • 无法在 BlackBerry Playbook 上设置音量

    我在更改黑莓游戏书的音量时遇到问题 首先 我将 Android 应用程序重新打包到 Palybook 应用程序 我需要使用搜索栏更改黑莓剧本的音量 并在搜索监听器中设置音频管理器音量 这是代码 audioManager AudioManag
  • 我如何在 mongodb 的数组中找到文本搜索

    id objectId 23651478 name Tomatos array title Vegetables description Vegitables are good to health id objectId 45761244
  • 使用 Spring Boot 的 Flyway Core 给出错误 'delayedFlywayInitializer' 和 'entityManagerFactory' 之间的循环依赖关系

    我想在 SQL Server 数据库上导入一些数据 我使用的是 Spring Boot 2 3 4 我还使用 Hibernate 来生成表 我在pom中添加了flyway核心
  • java中的回调是什么[重复]

    这个问题在这里已经有答案了 可能的重复 什么是回调函数 https stackoverflow com questions 824234 what is a callback function 我已经阅读了回调的维基百科定义 但我仍然没有明

随机推荐

  • 当宏注释不能在定义它的同一编译中使用时,这意味着什么?

    我对这个说法很好奇 错误 3 18 另一种可能性是您尝试使用宏 定义它的同一编译运行中的注释 我尝试谷歌搜索并发现了这个 最后 请记住 使用宏需要分两步进行编译 首先编译宏 然后编译使用宏的代码 这是必要的 以便您的宏可以在编译其余代码之前
  • .Net 中值类型有什么用?

    The 官方指南 http msdn microsoft com en us library y23b5415 aspx表明这些的实际用途很少 有没有人有例子说明他们在哪里充分利用了它们 相反 您会发现 C C 人们涌向结构 又称值类型 一
  • 如何在 python 中对 POST 方法进行单元测试?

    我有一个方法可以将包含 JSON 的 POST 发送到 Elasticsearch 实例 我正在尝试编写一个单元测试来验证发送的 JSON 的内容 但我不确定如何进行 我应该在 python 中创建一个本地服务器并让它验证 POST 的内容
  • .NET 4 构建期间未找到 LC.exe 文件

    我在迁移到 net 4 0 时遇到问题 在尝试构建时出现以下错误 C WINDOWS Microsoft NET Framework v4 0 30319 Microsoft Common targets 1917 9 error MSB3
  • vb6 打开文件以追加问题路径未找到

    Open App Path Folder str 0 For Output 似乎找不到一条路径 但是如果就在这之前我就找到了 MsgBox App Path Folder str 0 它提供了我想要的正确目录 文件名 如果我用引号中的直接路
  • 有没有办法访问之前在“heightForRowAtIndexPath”中计算的行高?

    我在方法 heightForRowAtIndexPath 中计算行的高度 但我需要在方法 cellForRowAtIndexPath 中使用该值 有没有办法访问已经计算的值 或者我需要再次进行计算 Thks Gotye None
  • Rails 使用缩写对模型进行非正统命名

    在我正在构建的应用程序中 我使用以下命令在数据库中存储 XML 文件acts as tree协会 我想给班级起个名字XMLElement但这会偏离轨道 因为大写是非标准的 它正在寻找XMLElement从文件名xml element rb
  • Scavenger:分配失败 - JavaScript 堆内存不足

    这是错误消息 lt Last few GCs gt 2383 0x7efe08001450 6100 ms Scavenge 30 3 39 5 gt 30 5 42 7 MB 73 5 0 0 ms average mu 1 000 cu
  • 为什么“git mergetool”(meld)显示冲突标记?

    为什么 git mergetool meld 向我显示带有 conclict 标记的祖先视图 这是完全错误的 我一直不明白为什么会这样做 我该如何修复它 应该显示 3 路合并 Your Changes Common Base Upstrea
  • chaquopy代码在哪个目录中搜索Android应用程序代码的Python代码中导入的Python包

    我已在 chaquopy Android 应用程序的 Python 代码的主要方法中导入了 nltk 库 它要求我实施nltk download punkt 供我处理 所以我想知道 代码在哪个目录中查找包 以便我可以在所需的文件夹中下载它们
  • 如何将数据传回父窗口?

    我找到了一个链接 显示如何将参数发送回打开器浏览器窗口 但它仅适用于window showmodal 如果我使用的话 应该有一个简单的方法可以做到同样的事情window open right 如果您使用 window open 则可以调用父
  • QThread::start(优先级) 与 Linux

    我正在使用一些QThread基于 KDE Neon 18 04 中的工作线程 基于 Ubuntu 18 04 内核 4 15 0 46 generic 工作线程干扰了我的桌面应用程序 因此我决定降低它们的优先级 Qt 文档QThread s
  • Syslog 真的有 1KB 消息限制吗?

    Syslog 似乎有 1KB 消息限制 这是硬编码到 Syslog 协议中的 还是可以为每个服务器设置的参数 我希望我读到的文章已经过时 所以如果您有任何信息 请分享 这是正确的 正如在系统日志协议 RFC https www rfc ed
  • 从 PHP/Apache 返回 100-Continue

    我正在尝试找到一种方法来防止脚本将不必要的数据上传到 PHP 脚本 我最初试图终止传入的读取连接 这显然违反了 HTTP 协议 我无法让它工作 但我一直在研究替代方案 发现100 Continue状态码正是我所需要的 我的客户应该发送所需的
  • AES密钥导出函数

    我有一个 bash 脚本 它使用 openssl 加密数据 并使用 Java 代码解密结果 根据我之前的post https stackoverflow com questions 8343894 aes encrypt with open
  • 使用 Selenium 测试 Sencha 2 应用程序

    我无法单击 Sencha 2 生成的按钮 因为它不是输入字段 它用 div 和 span 构建了按钮 找到这个链接 它描述了如何通过 Selenium 测试单击按钮http mobilewebqa blogspot com http mob
  • 如何获取 sqlalchemy 中受影响的行数?

    我有一个关于 Python 和 sqlalchemy 模块的问题 相当于什么cursor rowcount在 sqlalchemy Python 中 ResultProxy对象有一个rowcount https docs sqlalchem
  • 替换交叉过滤器数据,恢复维度和组

    我在用着dc js http dc js github io渲染数据集的漂亮气泡图 底层的 dc js 是交叉过滤器 https github com square crossfilter 我想使用来自服务器的新数据顺利刷新我的图表 这个问
  • 如何获取 Matplotlib 当前可用的所有字体的列表?

    例如当我想设置时font in matplotlib rc font font import matplotlib font manager matplotlib font manager findSystemFonts fontpaths
  • Spring-data-mongo无法使用构造函数实例化java.util.List

    Using spring data mongodb 1 5 4 and mongodb driver 3 4 2 我有课Hotel public class Hotel private String name private int pri