Spring Data MongoDB无法加载引用集合

问题描述 投票:0回答:1

我在名为failurecausesstatistics的mongo数据库中有两个集合。每个统计信息都有对失败原因列表的引用。

我有另一个带有spring-boot-starter-data-MongoDB]的Spring引导应用程序,我试图在其中加载统计信息。

在这里我可以找到统计信息元素,但未加载引用失败原因。

有人可以帮助我。

统计集合条目

{
    "_id" : ObjectId("5de64e537c31473444743985"),
    "projectName" : "Test",
    "buildNumber" : 5,
    "displayName" : "#5",
    "result" : "FAILURE",
    "failureCauses" : [ 
        {
            "failureCause" : {
                "$ref" : "failureCauses",
                "$id" : ObjectId("5ddcf6f98f705f000623ec39"),
                "$db" : "bfa_test"
            },
            "indications" : [ 
                {,
                    "matchingFile" : "log",
                    "matchingString" : "ERROR:"
                }
            ]
        }
    ]
} 

FailureCauses收集条目

{
    "_id" : ObjectId("5c99cfcfffb7870007bb351b"),
    "name" : " failed",
    "description" : "check build log.",
    "comment" : "",
    "indications" : [ 
        {
            "@class" : "com.sonyericsson.jenkins.plugins.bfa.model.indication.BuildLogIndication",
            "pattern" : "Execution  failed\\."
        }
    ],
    "modifications" : [ 
        {
            "user" : "abcv",
            "time" : ISODate("2019-03-26T07:07:59.872Z")
        }
    ],
    "lastOccurred" : ISODate("2019-09-16T05:38:45.623Z")
}

Spring StaticsRepository

public interface StatisticsRepository extends MongoRepository<Statistic, String> {

    @Query("{'failureCauses' : {'projectName' : ?0 , 'buildNumber' : ?1 }}")
    Collection<Statistic> findByProjectNameAndBuildNumber(String projectName,
            Integer buildNumber);
}



@Document(value = "statistics")
public class Statistic implements Serializable {
    @Id
    private String id;
    private String projectName;
    private String buildNumber;
    private String master;
    private Long duration;
    private String result;
    @DBRef
    private List<FailureCause> failureCauses;
}


@Document(value = "failureCauses")
public class FailureCause implements Serializable {
    @Id
    private String id;
    private String name;
    private String description;
    private String comment;
    private Date lastOccurred;
    private List<String> categories;
    private List<Indication> indications;
    private List<FailureCauseModification> modifications;
}

查询统计信息的输出

[
    {
        "id": "5de64e537c31473444743985",
        "projectName": "Test",
        "buildNumber": "5",
        "master": null,
        "duration": 490,
        "result": "FAILURE",
        "failureCauses": [
             {
                "id": null,
                "name": null,
                "description": null,
                "comment": null,
                "lastOccurred": null,
                "categories": null,
                "indications": [
                    {
                        "pattern": ".*some error.*",
                        "matchingString": "some error"
                    }
                ],
                "modifications": null
            }
        ]
    }
]

我在mongo数据库中有两个集合,分别名为failurecauses和statistics。每个统计信息都有对失败原因列表的引用。我还有一个带有spring-boot -...]的Spring boot应用程序。

根据集合statistic记录,@Query参数应作如下修改:
public interface StatisticsRepository extends MongoRepository<Statistic, String> { @Query("{'projectName' : ?0 , 'buildNumber' : ?1 }") Collection<Statistic> findByProjectNameAndBuildNumber(String projectName, Integer buildNumber); }
因为这两个字段在集合statistic中位于顶层。不作为子文档failureCauses中的字段。
spring mongodb mongodb-query spring-data spring-data-mongodb
1个回答
0
投票
因为这两个字段在集合statistic中位于顶层。不作为子文档failureCauses中的字段。
© www.soinside.com 2019 - 2024. All rights reserved.