/** * Adds a joint prefetch. * * @since 4.0 */ void mergePrefetch(PrefetchTreeNode node) { if (prefetchTree == null) { prefetchTree = new PrefetchTreeNode(); } prefetchTree.merge(node); }
/** * Merges prefetch into the query prefetch tree. * * @return this object */ public SelectById<T> prefetch(PrefetchTreeNode prefetch) { if (prefetch == null) { return this; } if (prefetches == null) { prefetches = new PrefetchTreeNode(); } prefetches.merge(prefetch); return this; }
/** * Merges prefetch into the query prefetch tree. * * @return this object */ public ColumnSelect<T> prefetch(PrefetchTreeNode prefetch) { if (prefetch == null) { return this; } if (prefetches == null) { prefetches = new PrefetchTreeNode(); } prefetches.merge(prefetch); replacementQuery = null; return this; }
/** * Merges prefetch into the query prefetch tree. * * @return this object */ public ObjectSelect<T> prefetch(PrefetchTreeNode prefetch) { if (prefetch == null) { return this; } if (prefetches == null) { prefetches = new PrefetchTreeNode(); } prefetches.merge(prefetch); replacementQuery = null; return this; }
/** * Merges {@link PrefetchTreeNode} into the current prefetch tree, cloning * the nodes added to this tree. Merged nodes semantics (if defined) and * non-phantom status are applied to the nodes of this tree. * * @param node * a root node of a tree to merge into this tree. The path of the * merged node within the resulting tree is determined from its * name. * * @since 4.0 */ public void merge(PrefetchTreeNode node) { if (node == null) { throw new NullPointerException("Null node"); } PrefetchTreeNode start = node.getName() != null ? addPath(node.getName()) : this; merge(start, node); }
void merge(PrefetchTreeNode original, PrefetchTreeNode toMerge) { if (toMerge.getSemantics() != UNDEFINED_SEMANTICS) { original.setSemantics(toMerge.getSemantics()); } if (!toMerge.isPhantom()) { original.setPhantom(false); } for (PrefetchTreeNode childToMerge : toMerge.getChildren()) { PrefetchTreeNode childOrigin = original.getChild(childToMerge.getName()); if (childOrigin == null) { childOrigin = original.addPath(childToMerge.getName()); } merge(childOrigin, childToMerge); } }