org.hibernate.graph.spi.AttributeNodeImplementor Maven / Gradle / Ivy
/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or .
*/
package org.hibernate.graph.spi;
import java.util.Map;
import java.util.function.BiConsumer;
import javax.persistence.Subgraph;
import org.hibernate.graph.AttributeNode;
import org.hibernate.graph.SubGraph;
import org.hibernate.metamodel.model.domain.spi.PersistentAttributeDescriptor;
import org.hibernate.metamodel.model.domain.spi.ManagedTypeDescriptor;
/**
* Integration version of the AttributeNode contract
*
* @author Strong Liu
* @author Steve Ebersole
*/
public interface AttributeNodeImplementor extends AttributeNode, GraphNodeImplementor {
@Override
PersistentAttributeDescriptor getAttributeDescriptor();
Map, SubGraphImplementor> getSubGraphMap();
Map, SubGraphImplementor> getKeySubGraphMap();
default void visitSubGraphs(BiConsumer, SubGraphImplementor> consumer) {
getSubGraphMap().forEach( consumer );
}
default void visitKeySubGraphs(BiConsumer, SubGraphImplementor> consumer) {
getKeySubGraphMap().forEach( consumer );
}
@Override
@SuppressWarnings("unchecked")
default Map, SubGraph> getSubGraphs() {
return (Map) getSubGraphMap();
}
@Override
@SuppressWarnings("unchecked")
default Map, SubGraph> getKeySubGraphs() {
return (Map) getKeySubGraphMap();
}
@Override
@SuppressWarnings("unchecked")
default Map getSubgraphs() {
return (Map) getSubGraphMap();
}
@Override
@SuppressWarnings("unchecked")
default Map getKeySubgraphs() {
return (Map) getKeySubGraphMap();
}
@Override
AttributeNodeImplementor makeCopy(boolean mutable);
@Override
SubGraphImplementor makeSubGraph();
@Override
SubGraphImplementor makeKeySubGraph();
@Override
SubGraphImplementor makeSubGraph(Class subtype);
@Override
SubGraphImplementor makeKeySubGraph(Class subtype);
SubGraphImplementor makeSubGraph(ManagedTypeDescriptor subtype);
SubGraphImplementor makeKeySubGraph(ManagedTypeDescriptor subtype);
void merge(AttributeNodeImplementor attributeNode);
}