【问题标题】:Spring Data Mongo nested id won't workSpring Data Mongo 嵌套 id 不起作用
【发布时间】:2015-03-02 16:15:55
【问题描述】:

Spring Data 是否以不同的方式处理 mongo 嵌套的“id”属性?我解释了我的问题:我的集合 ma​​tches 具有以下结构

"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 注释,但无法让它工作

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

【问题讨论】:

  • 在 TeamsRepository 中调用 findById 是否有效?

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


【解决方案1】:

哦,找到了解决方案:

MatchMongo 在我的位置上有 List&lt;TeamMongo&gt; teams;

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

所以应该调用方法

public List<MatchMongo> findByTeams_teamIdAttr(String id);

从没想过方法名应该反映对象属性而不是集合结构

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

【讨论】:

  • 我也有同样的问题,没看懂你的解释!
  • 我也不明白你的解释。你能更详细地解释一下你的解决方案吗?
猜你喜欢
  • 2014-04-13
  • 1970-01-01
  • 1970-01-01
  • 2020-09-27
  • 1970-01-01
  • 1970-01-01
  • 2020-01-19
  • 1970-01-01
  • 2021-02-04
相关资源
最近更新 更多