Copyright (c) 2011 - 2013 Oracle Corporation. All rights reserved.
This program and the accompanying materials are made available under the
terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
which accompanies this distribution.
The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
and the Eclipse Distribution License is available at
http://www.eclipse.org/org/documents/edl-v10.php.
Contributors:
Linda DeMichiel - Java Persistence 2.1
/*******************************************************************************
* Copyright (c) 2011 - 2013 Oracle Corporation. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
* which accompanies this distribution.
* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
* and the Eclipse Distribution License is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* Contributors:
* Linda DeMichiel - Java Persistence 2.1
*
******************************************************************************/
package javax.persistence;
import javax.persistence.metamodel.Attribute;
import java.util.List;
This type represents a subgraph for an attribute node that
corresponds to a Managed Type. Using this class, an entity subgraph
can be embedded within an EntityGraph.
Type parameters: - <T> – The type of the attribute.
See Also: Since: Java Persistence 2.1
/**
* This type represents a subgraph for an attribute node that
* corresponds to a Managed Type. Using this class, an entity subgraph
* can be embedded within an EntityGraph.
*
* @param <T> The type of the attribute.
*
* @see EntityGraph
* @see AttributeNode
* @see NamedSubgraph
*
* @since Java Persistence 2.1
*/
public interface Subgraph<T> {
Add one or more attribute nodes to the entity graph.
Params: - 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
/**
* Add one or more attribute nodes to the entity graph.
*
* @param attributeName name of the attribute
* @throws IllegalArgumentException if the attribute is not an
* attribute of this managed type.
* @throws IllegalStateException if the EntityGraph has been
* statically defined
*/
public void addAttributeNodes(String ... attributeName);
Add one or more attribute nodes to the entity graph.
Params: - attribute – attribute
Throws: - IllegalStateException – if this EntityGraph has been
statically defined
/**
* Add one or more attribute nodes to the entity graph.
* @param attribute attribute
*
* @throws IllegalStateException if this EntityGraph has been
* statically defined
*/
public void addAttributeNodes(Attribute<T, ?> ... attribute);
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.
Params: - attribute – attribute
Throws: - IllegalArgumentException – if the attribute's target
type is not a managed type
- IllegalStateException – if the EntityGraph has been
statically defined
Returns: subgraph for the attribute
/**
* 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.
*
* @param attribute attribute
* @return subgraph for the attribute
* @throws IllegalArgumentException if the attribute's target
* type is not a managed type
* @throws IllegalStateException if the EntityGraph has been
* statically defined
*/
public <X> Subgraph<X> addSubgraph(Attribute<T, X> attribute);
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
Params: - attribute – attribute
- type – entity subclass
Throws: - IllegalArgumentException – if the attribute's target
type is not a managed type
- IllegalStateException – if this EntityGraph has been
statically defined
Returns: subgraph for the attribute
/**
* 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
*
* @param attribute attribute
* @param type entity subclass
* @return subgraph for the attribute
* @throws IllegalArgumentException if the attribute's target
* type is not a managed type
* @throws IllegalStateException if this EntityGraph has been
* statically defined
*/
public <X> Subgraph<? extends X> addSubgraph(Attribute<T, X> attribute, Class<? extends X> type);
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.
Params: - attributeName – name of 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 type
- IllegalStateException – if this EntityGraph has been
statically defined
Returns: subgraph for the attribute
/**
* 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.
*
* @param attributeName name of the attribute
* @return subgraph for the attribute
* @throws IllegalArgumentException if the attribute is not an
* attribute of this managed type.
* @throws IllegalArgumentException if the attribute's target
* type is not a managed type
* @throws IllegalStateException if this EntityGraph has been
* statically defined
*/
public <X> Subgraph<X> addSubgraph(String attributeName);
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
Params: - attributeName – name of the attribute
- type – entity subclass
Throws: - IllegalArgumentException – if the attribute is not
an attribute of this managed type.
- IllegalArgumentException – if the attribute's target
type is not a managed type
- IllegalStateException – if this EntityGraph has been
statically defined
Returns: subgraph for the attribute
/**
* 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
*
* @param attributeName name of the attribute
* @param type entity subclass
* @return subgraph for the attribute
* @throws IllegalArgumentException if the attribute is not
* an attribute of this managed type.
* @throws IllegalArgumentException if the attribute's target
* type is not a managed type
* @throws IllegalStateException if this EntityGraph has been
* statically defined
*/
public <X> Subgraph<X> addSubgraph(String attributeName, Class<X> type);
Add a node to the graph that corresponds to a map key
that is a managed type. This allows for construction of
multinode entity graphs that include related managed types.
Params: - attribute – attribute
Throws: - IllegalArgumentException – if the attribute's target
type is not a managed type entity
- IllegalStateException – if this EntityGraph has been
statically defined
Returns: subgraph for the key attribute
/**
* Add a node to the graph that corresponds to a map key
* that is a managed type. This allows for construction of
* multinode entity graphs that include related managed types.
*
* @param attribute attribute
* @return subgraph for the key attribute
* @throws IllegalArgumentException if the attribute's target
* type is not a managed type entity
* @throws IllegalStateException if this EntityGraph has been
* statically defined
*/
public <X> Subgraph<X> addKeySubgraph(Attribute<T, X> attribute);
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
Params: - attribute – attribute
- type – entity subclass
Throws: - IllegalArgumentException – if the attribute's target
type is not a managed type entity
- IllegalStateException – if this EntityGraph has been
statically defined
Returns: subgraph for the attribute
/**
* 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
*
* @param attribute attribute
* @param type entity subclass
* @return subgraph for the attribute
* @throws IllegalArgumentException if the attribute's target
* type is not a managed type entity
* @throws IllegalStateException if this EntityGraph has been
* statically defined
*/
public <X> Subgraph<? extends X> addKeySubgraph(Attribute<T, X> attribute, Class<? extends X> type);
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.
Params: - attributeName – name of 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 type
- IllegalStateException – if this EntityGraph has been
statically defined
Returns: subgraph for the key attribute
/**
* 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.
*
* @param attributeName name of the attribute
* @return subgraph for the key attribute
* @throws IllegalArgumentException if the attribute is not an
* attribute of this entity.
* @throws IllegalArgumentException if the attribute's target
* type is not a managed type
* @throws IllegalStateException if this EntityGraph has been
* statically defined
*/
public <X> Subgraph<X> addKeySubgraph(String attributeName);
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
Params: - attributeName – name of the attribute
- type – entity subclass
Throws: - IllegalArgumentException – if the attribute is not an
attribute of this entity.
- IllegalArgumentException – if the attribute's target
type is not a managed type
- IllegalStateException – if this EntityGraph has been
statically defined
Returns: subgraph for the attribute
/**
* 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
*
* @param attributeName name of the attribute
* @param type entity subclass
* @return subgraph for the attribute
* @throws IllegalArgumentException if the attribute is not an
* attribute of this entity.
* @throws IllegalArgumentException if the attribute's target
* type is not a managed type
* @throws IllegalStateException if this EntityGraph has been
* statically defined
*/
public <X> Subgraph<X> addKeySubgraph(String attributeName, Class<X> type);
Return the attribute nodes corresponding to the attributes of
this managed type that are included in the subgraph.
Returns: list of attribute nodes included in the subgraph or
empty List if none have been defined
/**
* Return the attribute nodes corresponding to the attributes of
* this managed type that are included in the subgraph.
* @return list of attribute nodes included in the subgraph or
* empty List if none have been defined
*/
public List<AttributeNode<?>> getAttributeNodes();
Return the type for which this subgraph was defined.
Returns: managed type referenced by the subgraph
/**
* Return the type for which this subgraph was defined.
* @return managed type referenced by the subgraph
*/
public Class<T> getClassType();
}