import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
-import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
@JoinColumn(name = "dataspace_id")
private DataspaceEntity dataspace;
- @OneToOne(fetch = FetchType.LAZY)
+ @ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "anchor_id")
@EqualsAndHashCode.Include
private AnchorEntity anchor;
private static boolean canUseRegexQuickFind(final FetchDescendantsOption fetchDescendantsOption,
final CpsPathQuery cpsPathQuery) {
return fetchDescendantsOption.equals(FetchDescendantsOption.INCLUDE_ALL_DESCENDANTS)
+ && !cpsPathQuery.hasAncestorAxis()
&& !cpsPathQuery.hasLeafConditions()
&& !cpsPathQuery.hasTextFunctionCondition()
&& !cpsPathQuery.hasContainsFunctionCondition();
private List<DataNode> getDataNodesUsingRegexQuickFind(final FetchDescendantsOption fetchDescendantsOption,
final AnchorEntity anchorEntity,
final CpsPathQuery cpsPathQuery) {
- Collection<FragmentEntity> fragmentEntities;
final String xpathRegex = FragmentQueryBuilder.getXpathSqlRegexForQuickFindWithDescendants(cpsPathQuery);
final List<FragmentExtract> fragmentExtracts = (anchorEntity == ALL_ANCHORS)
- ? fragmentRepository.quickFindWithDescendantsAcrossAnchor(xpathRegex) :
- fragmentRepository.quickFindWithDescendants(anchorEntity.getId(), xpathRegex);
- fragmentEntities = FragmentEntityArranger.toFragmentEntityTrees(anchorEntity, fragmentExtracts);
- if (cpsPathQuery.hasAncestorAxis()) {
- final Collection<String> ancestorXpaths = processAncestorXpath(fragmentEntities, cpsPathQuery);
- fragmentEntities = (anchorEntity == ALL_ANCHORS) ? getAncestorFragmentEntitiesAcrossAnchors(cpsPathQuery,
- fragmentEntities) : getFragmentEntities(anchorEntity, ancestorXpaths, fetchDescendantsOption);
- }
+ ? fragmentRepository.quickFindWithDescendantsAcrossAnchors(xpathRegex)
+ : fragmentRepository.quickFindWithDescendants(anchorEntity.getId(), xpathRegex);
+ final Collection<FragmentEntity> fragmentEntities =
+ FragmentEntityArranger.toFragmentEntityTrees(anchorEntity, fragmentExtracts);
return createDataNodesFromFragmentEntities(fetchDescendantsOption, fragmentEntities);
}