我试图从该表上的一个表中获取数据列表,该数据具有来自" hiercd"one_answers" parenthiercd"的亲子关系。在我第一次获得所有父母列表中。之后,当我构建数据时,我需要让那些父母的所有孩子。这可以像我在预期结果中所显示的那样多级。
表具有如下
的数据 **hierCd** **Name** **parentHierCd**
TEA-1 tea1 TEA
TEA-2 tea2 TEA
TEA-3 tea3 TEA
TEAA-1 teaa-1 TEA-1
TEAA-2 teaa-2 TEA-1
TEAAA-1 teaaa-1 TEAA-1
ITC-1 itc-1 ITC
ITC-2 itc-2 ITC
ITCA-1 itca-1 ITC-1
ITCA-2 itca-2 ITC-1
我提到了所有代码。HIER是实体文件,它是由DB映射的。委员会正在使用REST API方面设置数据。
//Committee api model class
public class Committee {
@JsonProperty("id")
private UUID id = null;
@JsonProperty("name")
private String name = null;
@JsonProperty("code")
private String code = null;
@JsonProperty("parentCd")
private String parentCd = null;
@JsonProperty("children")
@Valid
private List<Committee> children = null;
with getters and setters
}
//Hier entity model class
public class Hier {
private String hierCd;
private String hierTyp;
private String hierName;
private String uuid;
private String parentHierCd;
with getters and setters
}
//This method is calling for get parent record.
public List<Committee> getCommittees(){
private List<String> PARENT_CDS = Arrays.asList(new String[] { "TEA", "ITC" });
List<Committee> committees = new ArrayList<>();
List<Hier> committeeHierarchies = committeeRepository.findParentHiersByHierCdInOrderByHierNameAsc(PARENT_CDS);
for(Hier hier:committeeHierarchies)
{
committees.add(committeeBuilder(hier));
}
return committees;
}
// Building committee with sub committee
private Committee committeeBuilder(Hier hier) {
Committee committee = new Committee();
committee.setId(UUID.fromString(hier.getUuid()));
committee.setCode(hier.getHierCd());
committee.setName(hier.getHierName());
committee.setParentCd(hier.getParentHierCd());
if(hiertype.equals("allCommittee")){
committee.setChildren(getChildrenByParentCd(hier.getHierCd()));
}
return committee;
}
//Return sub committees by parent hier code
public List<Committee> getChildrenByParentCd(String parentCd) {
List<Committee> committees = new ArrayList<>();
List<Hier> children = committeeRepository.findChildrenByParentHierCd(parentCd);
for (Hier hier : children) {
Committee committee = new Committee();
committee.setId(UUID.fromString(hier.getUuid()));
committee.setCode(hier.getHierCd());
committee.setName(hier.getHierName());
committee.setParentCd(hier.getParentHierCd());
committees.add(committee);
}
return committees;
}
上面的代码如下所示,它仅在两个级别(父和孩子(中返回数据,但是我需要像下面提到的递归有关。
。 > TEA
> TEA-1
> TEA-2
> TEA-3
> ITC
> ITC-1
> ITC-2
结果应该像以下
> TEA
> TEA-1
> TEAA-1
> TEAAA-1
> TEAA-2
> TEA-2
> TEA-3
> ITC
> ITC-1
> ITCA-1
> ITCA-2
> ITC-2
使用递归函数方法解决此问题。喜欢找到子女是否适用于父母。基于该呼叫委员会构成