我在mongo数据库中有两个集合,分别名为failurecauses和statistics。每个统计信息都有对失败原因列表的引用。
我还有一个带有spring-boot-starter-data-MongoDB的 Spring boot应用程序,我试图在其中加载统计信息。
在这里,我可以找到统计信息元素,但未加载引用失败原因。
有人可以帮我吗。
统计收集条目
{
"_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:"
}
]
}
]
}
失败原因收集条目
{
"_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静态库
public interface StatisticsRepository extends MongoRepository<Statistic, String> {
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
}
]
}
]
重组Model类解决了这个问题,
下面是映射mongo db statistics收集架构的正确模型
故障原因模型
@Document(value = "failureCauses")
public class FailureCause implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
/**
* @param id the id.
* @param name the name of this FailureCause.
* @param description the description of this FailureCause.
* @param comment the comment of this FailureCause.
* @param lastOccurred the time at which this FailureCause last occurred.
* @param categories the categories of this FailureCause.
* @param indications the list of indications
* @param modifications the modification history of this FailureCause.
*/
@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;
}
统计模型
@Document(value = "statistics")
public class Statistic implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
private String id;
private String projectName;
private String buildNumber;
private String master;
private Long duration;
private String result;
private List<FailureCauses> failureCauses;
}
失败原因模型
public class FailureCauses implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
@DBRef
FailureCause failureCause;
/**
* @return the failureCause
*/
public FailureCause getFailureCause()
{
return failureCause;
}
/**
* @param failureCause the failureCause to set
*/
public void setFailureCause(FailureCause failureCause)
{
this.failureCause = failureCause;
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句