【问题标题】:How to update Query annotations with two-level parameters after upgrade to Spring-boot 2?升级到 Spring-boot 2 后如何使用两级参数更新查询注解?
【发布时间】:2019-06-12 11:20:22
【问题描述】:

在 spring-boot 版本升级后,我不能在来自 spring-data-mongodb 存储库中的 @Query 注释的 mongodb 请求中使用复杂的 2 级参数除以点字符。 spring-boot 2 的最佳方法是什么,以及如何通过最少的更改来修复它?

将 spring-boot 库从 v.1.5.6.RELEASE 升级到 2.1.5.RELEASE 后出现问题。应用程序启动成功,但运行时对 mongodb 的请求出现错误。

@Query("{_id.subscriberId: ?0}")
UserSubscription findOneBySubscriberId(String subscriberId);

我希望返回找到的 UserSubscription 对象或 null 值(如在 spring-data-mongodb v.1.5.6 中)。但是在 spring-data-mongodb v.2.1.5 我得到错误: org.bson.json.JsonParseException:无效的 JSON 输入。位置:5。字符:'.'。

【问题讨论】:

    标签: spring mongodb spring-data-mongodb querydsl


    【解决方案1】:

    你确定_id.subscriberId 是你要在这里做什么吗?你的 ID 字段是一个复杂的对象吗?我想也许你打算使用_id以外的东西?

    但是,您应该能够将属性用引号括起来以修复您当前看到的错误:

    @Query("{_`id.subscriberId`: ?0}")
    

    【讨论】:

    • 确定它是一个复杂的对象,subscriberId 是它的内部字段之一
    • 谢谢,用引号试过了,下一个变种效果很好:@Query(value = "{'_id.subscriberId': '?0'}")
    猜你喜欢
    • 1970-01-01
    • 2018-11-22
    • 1970-01-01
    • 2018-08-19
    • 2019-05-19
    • 1970-01-01
    • 2018-09-16
    • 2023-03-10
    • 2019-08-24
    相关资源
    最近更新 更多