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尝试使用其他字段(例如refere.name)是有效的。
我甚至尝试了@Query注释,但无法使其在中工作
还有其他解决方案吗?这是bug还是我做错了什么?
哦找到了解决方案:
MatchMongo有List<TeamMongo> teams;
,我有
@Id
private String id;
@Field(value = "id")
private String teamIdAttr;
所以这个方法应该叫做
public List<MatchMongo> findByTeams_teamIdAttr(String id);
从未想过方法名称应该反映对象属性而不是集合结构
感谢@martin baugartner您的评论帮助解决了这个问题:)