Package jakarta.persistence
Interface Graph<T>
- All Known Subinterfaces:
EntityGraph<T>
,Subgraph<T>
public interface Graph<T>
Declares operations common to
EntityGraph
and Subgraph
.- Since:
- 3.2
- See Also:
-
Method Summary
Modifier and TypeMethodDescription<Y> AttributeNode<Y>
addAttributeNode
(Attribute<? super T, Y> attribute) Get an existing attribute node for the given attribute, or add a new attribute node if there is no existing node.<Y> AttributeNode<Y>
addAttributeNode
(String attributeName) Get an existing attribute node for the attribute with the given name, or add a new attribute node if there is no existing node.void
addAttributeNodes
(Attribute<? super T, ?>... attribute) Add one or more attribute nodes to the entity graph.void
addAttributeNodes
(String... attributeName) Add one or more attribute nodes to the entity graph.<E> Subgraph<E>
addElementSubgraph
(PluralAttribute<? super T, ?, E> attribute) Add a node to the graph that corresponds to a collection element that is a managed type.<X> Subgraph<X>
addElementSubgraph
(String attributeName) Add a node to the graph that corresponds to a collection element that is a managed type.<X> Subgraph<X>
addElementSubgraph
(String attributeName, Class<X> type) Add a node to the graph that corresponds to a collection element that is a managed type.<X> Subgraph<X>
addKeySubgraph
(Attribute<? super T, X> attribute) Deprecated, for removal: This API element is subject to removal in a future version.<X> Subgraph<? extends X>
addKeySubgraph
(Attribute<? super T, X> attribute, Class<? extends X> type) Deprecated, for removal: This API element is subject to removal in a future version.<X> Subgraph<X>
addKeySubgraph
(String attributeName) Add a node to the graph that corresponds to a map key that is a managed type.<X> Subgraph<X>
addKeySubgraph
(String attributeName, Class<X> type) Add a node to the graph that corresponds to a map key that is a managed type with inheritance.<K> Subgraph<K>
addMapKeySubgraph
(MapAttribute<? super T, K, ?> attribute) Add a node to the graph that corresponds to a map key that is a managed type.<X> Subgraph<X>
addSubgraph
(Attribute<? super T, X> attribute) Add a node to the graph that corresponds to a managed type.<X> Subgraph<? extends X>
addSubgraph
(Attribute<? super T, X> attribute, Class<? extends X> type) Deprecated, for removal: This API element is subject to removal in a future version.<X> Subgraph<X>
addSubgraph
(String attributeName) Add a node to the graph that corresponds to a managed type.<X> Subgraph<X>
addSubgraph
(String attributeName, Class<X> type) Add a node to the graph that corresponds to a managed type with inheritance.<E> Subgraph<E>
addTreatedElementSubgraph
(PluralAttribute<? super T, ?, ? super E> attribute, Class<E> type) Add a node to the graph that corresponds to a collection element that is a managed type.<K> Subgraph<K>
addTreatedMapKeySubgraph
(MapAttribute<? super T, ? super K, ?> attribute, Class<K> type) Add a node to the graph that corresponds to a map key that is a managed type with inheritance.<Y> Subgraph<Y>
addTreatedSubgraph
(Attribute<? super T, ? super Y> attribute, Class<Y> type) Add a node to the graph that corresponds to a managed type with inheritance.<Y> AttributeNode<Y>
getAttributeNode
(Attribute<? super T, Y> attribute) Get an existing attribute node for the given attribute.<Y> AttributeNode<Y>
getAttributeNode
(String attributeName) Get an existing attribute node for the attribute with the given name.List<AttributeNode<?>>
Return the attribute nodes corresponding to the attributes of this managed type that are included in the graph.boolean
hasAttributeNode
(Attribute<? super T, ?> attribute) Determine if there is an existing attribute node for the given attribute.boolean
hasAttributeNode
(String attributeName) Determine if there is an existing attribute node for the attribute with the given name.void
removeAttributeNode
(Attribute<? super T, ?> attribute) Remove an attribute node from the entity graph.void
removeAttributeNode
(String attributeName) Remove an attribute node from the entity graph.void
Remove all attribute nodes of the given attribute types.
-
Method Details
-
addAttributeNode
Get an existing attribute node for the attribute with the given name, or add a new attribute node if there is no existing node.- Parameters:
attributeName
- name of the attribute- Returns:
- the attribute node
- Throws:
IllegalArgumentException
- if the attribute is not an attribute of this entity.IllegalStateException
- if the EntityGraph has been statically defined- Since:
- 3.2
-
addAttributeNode
Get an existing attribute node for the given attribute, or add a new attribute node if there is no existing node.- Parameters:
attribute
- attribute- Returns:
- the attribute node
- Throws:
IllegalStateException
- if the EntityGraph has been statically defined- Since:
- 3.2
-
hasAttributeNode
Determine if there is an existing attribute node for the attribute with the given name.- Parameters:
attributeName
- name of the attribute- Returns:
- true if there is an existing attribute node
- Throws:
IllegalArgumentException
- if the attribute is not an attribute of this entity.- Since:
- 3.2
-
hasAttributeNode
Determine if there is an existing attribute node for the given attribute.- Parameters:
attribute
- attribute- Returns:
- true if there is an existing attribute node
- Since:
- 3.2
-
getAttributeNode
Get an existing attribute node for the attribute with the given name.- Parameters:
attributeName
- name of the attribute- Returns:
- the attribute node
- Throws:
IllegalArgumentException
- if the attribute is not an attribute of this entity.NoSuchElementException
- if there is no existing node for the attribute- Since:
- 3.2
-
getAttributeNode
Get an existing attribute node for the given attribute.- Parameters:
attribute
- attribute- Returns:
- the attribute node
- Throws:
NoSuchElementException
- if there is no existing node for the attribute- Since:
- 3.2
-
removeAttributeNode
Remove an attribute node from the entity graph. When this graph is interpreted as a load graph, this operation suppresses inclusion of an attribute mapped for eager fetching. The effect of this call may be overridden by subsequent invocations ofaddAttributeNode(java.lang.String)
oraddSubgraph(jakarta.persistence.metamodel.Attribute<? super T, X>)
. If there is no existing node for the given attribute name, this operation has no effect.- Parameters:
attributeName
- name of the attribute- Since:
- 3.2
-
removeAttributeNode
Remove an attribute node from the entity graph. When this graph is interpreted as a load graph, this operation suppresses inclusion of an attribute mapped for eager fetching. The effect of this call may be overridden by subsequent invocations ofaddAttributeNode(java.lang.String)
oraddSubgraph(jakarta.persistence.metamodel.Attribute<? super T, X>)
. If there is no existing node for the given attribute, this operation has no effect.- Parameters:
attribute
- attribute- Since:
- 3.2
-
removeAttributeNodes
Remove all attribute nodes of the given attribute types. When this graph is interpreted as a load graph, this operation suppresses inclusion of attributes mapped for eager fetching. The effect of this call may be overridden by subsequent invocations ofaddAttributeNode(java.lang.String)
oraddSubgraph(jakarta.persistence.metamodel.Attribute<? super T, X>)
.- Since:
- 3.2
-
addAttributeNodes
Add one or more attribute nodes to the entity graph. If there is already an existing node for one of the given attribute names, that particular argument is ignored and has no effect.- Parameters:
attributeName
- name of the attribute- Throws:
IllegalArgumentException
- if the attribute is not an attribute of this managed type.IllegalStateException
- if the EntityGraph has been statically defined
-
addAttributeNodes
Add one or more attribute nodes to the entity graph. If there is already an existing node for one of the given attributes, that particular argument is ignored and has no effect.- Parameters:
attribute
- attribute- Throws:
IllegalStateException
- if this EntityGraph has been statically defined
-
addSubgraph
Add a node to the graph that corresponds to a managed type. This allows for construction of multi-node entity graphs that include related managed types.- Parameters:
attribute
- attribute- Returns:
- subgraph for the attribute
- Throws:
IllegalArgumentException
- if the attribute's target type is not a managed typeIllegalStateException
- if the EntityGraph has been statically defined
-
addTreatedSubgraph
Add a node to the graph that corresponds to a managed type with inheritance. This allows for multiple subclass subgraphs to be defined for this node of the entity graph. Subclass subgraphs will automatically include the specified attributes of superclass subgraphs.- Parameters:
attribute
- attributetype
- entity subclass- Returns:
- subgraph for the attribute
- Throws:
IllegalArgumentException
- if the attribute's target type is not a managed typeIllegalStateException
- if the EntityGraph has been statically defined- Since:
- 3.2
-
addSubgraph
@Deprecated(since="3.2", forRemoval=true) <X> Subgraph<? extends X> addSubgraph(Attribute<? super T, X> attribute, Class<? extends X> type) Deprecated, for removal: This API element is subject to removal in a future version.Add a node to the graph that corresponds to a managed type with inheritance. This allows for multiple subclass subgraphs to be defined for this node of the entity graph. Subclass subgraphs will automatically include the specified attributes of superclass subgraphs- Parameters:
attribute
- attributetype
- entity subclass- Returns:
- subgraph for the attribute
- Throws:
IllegalArgumentException
- if the attribute's target type is not a managed typeIllegalStateException
- if this EntityGraph has been statically defined
-
addSubgraph
Add a node to the graph that corresponds to a managed type. This allows for construction of multi-node entity graphs that include related managed types.- Parameters:
attributeName
- name of the attribute- Returns:
- subgraph for the attribute
- Throws:
IllegalArgumentException
- if the attribute is not an attribute of this managed type.IllegalArgumentException
- if the attribute's target type is not a managed typeIllegalStateException
- if this EntityGraph has been statically defined
-
addSubgraph
Add a node to the graph that corresponds to a managed type with inheritance. This allows for multiple subclass subgraphs to be defined for this node of the entity graph. Subclass subgraphs will automatically include the specified attributes of superclass subgraphs- Parameters:
attributeName
- name of the attributetype
- entity subclass- Returns:
- subgraph for the attribute
- Throws:
IllegalArgumentException
- if the attribute is not an attribute of this managed type.IllegalArgumentException
- if the attribute's target type is not a managed typeIllegalStateException
- if this EntityGraph has been statically defined
-
addElementSubgraph
Add a node to the graph that corresponds to a collection element that is a managed type. This allows for construction of multi-node entity graphs that include related managed types.- Parameters:
attribute
- attribute- Returns:
- subgraph for the element attribute
- Throws:
IllegalArgumentException
- if the attribute's target type is not an entityIllegalStateException
- if this EntityGraph has been statically defined- Since:
- 3.2
-
addTreatedElementSubgraph
<E> Subgraph<E> addTreatedElementSubgraph(PluralAttribute<? super T, ?, ? super E> attribute, Class<E> type) Add a node to the graph that corresponds to a collection element that is a managed type. This allows for construction of multi-node entity graphs that include related managed types.- Parameters:
attribute
- attribute- Returns:
- subgraph for the element attribute
- Throws:
IllegalArgumentException
- if the attribute's target type is not an entityIllegalStateException
- if this EntityGraph has been statically defined- Since:
- 3.2
-
addElementSubgraph
Add a node to the graph that corresponds to a collection element that is a managed type. This allows for construction of multi-node entity graphs that include related managed types.- Parameters:
attributeName
- name of the attribute- Returns:
- subgraph for the element attribute
- Throws:
IllegalArgumentException
- if the attribute is not an attribute of this entity.IllegalArgumentException
- if the attribute's target type is not a managed typeIllegalStateException
- if this EntityGraph has been statically defined
-
addElementSubgraph
Add a node to the graph that corresponds to a collection element that is a managed type. This allows for construction of multi-node entity graphs that include related managed types.- Parameters:
attributeName
- name of the attributetype
- entity subclass- Returns:
- subgraph for the element attribute
- Throws:
IllegalArgumentException
- if the attribute is not an attribute of this entity.IllegalArgumentException
- if the attribute's target type is not a managed typeIllegalStateException
- if this EntityGraph has been statically defined
-
addMapKeySubgraph
Add a node to the graph that corresponds to a map key that is a managed type. This allows for construction of multi-node entity graphs that include related managed types.- Parameters:
attribute
- attribute- Returns:
- subgraph for the key attribute
- Throws:
IllegalArgumentException
- if the attribute's target type is not a managed type entityIllegalStateException
- if this EntityGraph has been statically defined
-
addTreatedMapKeySubgraph
<K> Subgraph<K> addTreatedMapKeySubgraph(MapAttribute<? super T, ? super K, ?> attribute, Class<K> type) Add a node to the graph that corresponds to a map key that is a managed type with inheritance. This allows for construction of multi-node entity graphs that include related managed types. Subclass subgraphs will automatically include the specified attributes of superclass subgraphs- Parameters:
attribute
- attributetype
- entity subclass- Returns:
- subgraph for the attribute
- Throws:
IllegalArgumentException
- if the attribute's target type is not a managed type entityIllegalStateException
- if this EntityGraph has been statically defined
-
addKeySubgraph
@Deprecated(since="3.2", forRemoval=true) <X> Subgraph<X> addKeySubgraph(Attribute<? super T, X> attribute) Deprecated, for removal: This API element is subject to removal in a future version.Add a node to the graph that corresponds to a map key that is a managed type. This allows for construction of multi-node entity graphs that include related managed types.- Parameters:
attribute
- attribute- Returns:
- subgraph for the key attribute
- Throws:
IllegalArgumentException
- if the attribute's target type is not a managed type entityIllegalStateException
- if this EntityGraph has been statically defined
-
addKeySubgraph
@Deprecated(since="3.2", forRemoval=true) <X> Subgraph<? extends X> addKeySubgraph(Attribute<? super T, X> attribute, Class<? extends X> type) Deprecated, for removal: This API element is subject to removal in a future version.Add a node to the graph that corresponds to a map key that is a managed type with inheritance. This allows for construction of multi-node entity graphs that include related managed types. Subclass subgraphs will automatically include the specified attributes of superclass subgraphs- Parameters:
attribute
- attributetype
- entity subclass- Returns:
- subgraph for the attribute
- Throws:
IllegalArgumentException
- if the attribute's target type is not a managed type entityIllegalStateException
- if this EntityGraph has been statically defined
-
addKeySubgraph
Add a node to the graph that corresponds to a map key that is a managed type. This allows for construction of multi-node entity graphs that include related managed types.- Parameters:
attributeName
- name of the attribute- Returns:
- subgraph for the key attribute
- Throws:
IllegalArgumentException
- if the attribute is not an attribute of this entity.IllegalArgumentException
- if the attribute's target type is not a managed typeIllegalStateException
- if this EntityGraph has been statically defined
-
addKeySubgraph
Add a node to the graph that corresponds to a map key that is a managed type with inheritance. This allows for construction of multi-node entity graphs that include related managed types. Subclass subgraphs will include the specified attributes of superclass subgraphs- Parameters:
attributeName
- name of the attributetype
- entity subclass- Returns:
- subgraph for the attribute
- Throws:
IllegalArgumentException
- if the attribute is not an attribute of this entity.IllegalArgumentException
- if the attribute's target type is not a managed typeIllegalStateException
- if this EntityGraph has been statically defined
-
getAttributeNodes
List<AttributeNode<?>> getAttributeNodes()Return the attribute nodes corresponding to the attributes of this managed type that are included in the graph.- Returns:
- list of attribute nodes included in the graph or an empty list if none have been defined
-
addMapKeySubgraph(MapAttribute)