Spring Data Mongo 嵌套 id 不起作用

标签 spring mongodb spring-data spring-data-mongodb

Spring Data 是否以不同方式对待 mongo 嵌套“id”属性?我解释我的问题:我的集合匹配具有以下结构

"teams":  [
        {
            "id" : "5601",
            "name" : "FC Basel"
        },
        ... // more
    ]

当我想检索团队 ID 为 5601 的所有比赛时,我执行以下查询

db.matches.find({ "teams.id" : "5601"})

它工作完美并返回一些对象。

当我创建一个方法时

public List<MatchMongo> findByTeams_id(String id);

在我的 MatchRepository 界面上,我得到 0 个结果。 日志显示

Created query Query: { "teams.id" : "5601"}, Fields: null, Sort: null

find using query: { "teams.id" : "5601"} fields: null for class: class
MatchMongo in collection: matches

所以他提出的问题似乎是正确的......:S 尝试使用其他字段(例如referee.name)有效。

我什至尝试使用@Query注释,但无法让它工作

还有其他解决办法吗?这是一个错误还是我做错了什么?

最佳答案

哦找到了解决方案:

MatchMongo 有 List<TeamMongo> teams;关于我在哪里

@Id
private String id;
@Field(value = "id")
private String teamIdAttr;

所以应该调用该方法

public List<MatchMongo> findByTeams_teamIdAttr(String id);

从未想过方法名称应该反射(reflect)对象属性而不是集合结构

感谢@martin-baumgartner,您的评论有助于解决这个问题:)

关于Spring Data Mongo 嵌套 id 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28814449/

相关文章:

java - 如何在不使用 Roo 的情况下简化 Spring/Hibernate 组合

java - 在 IntelliJ IDEA 中使用 hibernate ( console ) 的用户访问被拒绝

node.js - 获取 Kue 作业的结果并通过开放连接将其推送给客户端

linux - 启动数据库 : mongod failed

mysql - 可以在 Rails 中配置模型以从不同的数据源提取数据吗?

java - 如何使 Spring AspectJ 注释在 Java 6/7 中工作

spring - 如何存储 session ID并将其与用户相关联

java - Hibernate 无法识别脚本中的列长度。它使用默认值并为列错误提供数据太长

java - MongoDB 使用 Spring Data Mongo 在集合中自动递增 Integer Id

java - Jpa 存储库保存类型参数 'S' 的推断类型 'S' 不在其范围内