If none of these conditions are met then no FetchGroup will be used when
executing a query.
Note: This includes the execution of queries to populate lazy and eager
relationships.
Loading: A FetchGroup can optionally specify that it needs its
included relationships loaded. This can be done using
setShouldLoad(boolean)
and setShouldLoadAll(boolean)
as
well as the corresponding configurations in the @FetchGroup annotation and
the element in the eclipselink-orm.xml. When this si configured
the FetchGroup will also function as a LoadGroup
causing all of its
specified relationships to be populated prior to returning the results form
the query execution.
- See Also:
FetchGroupManager
,
QueryHints#FETCH_GROUP
,
LoadGroup
,
Serialized Form- Author:
- King Wang, dclarke, ailitchev
- Since:
- TopLink 10.1.3
Field Summary |
protected org.eclipse.persistence.internal.queries.EntityFetchGroup |
entityFetchGroup
Caches the EntityFetch group for this FetchGroup |
protected FetchGroupTracker |
rootEntity
Stores a reference to the root entity for an Aggregate Object relationship. |
Methods inherited from class org.eclipse.persistence.queries.AttributeGroup |
addAttribute, addAttributes, clone, containsAttribute, containsAttributeInternal, convert, convertClassNamesToClasses, equals, findGroup, getAllItems, getAttributeNames, getItem, getItem, getItems, getName, getSubClassGroups, getType, getTypeName, hasInheritance, hasItems, insertSubClass, isConcurrent, isCopyGroup, isLoadGroup, isSupersetOf, newItem, removeAttribute, setAllSubclasses, setAttributeNames, setName, toCopyGroup, toCopyGroup, toFetchGroup, toFetchGroup, toLoadGroup, toString, toStringAdditionalInfo, toStringItems, toStringPath |
Methods inherited from class java.lang.Object |
finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
entityFetchGroup
protected org.eclipse.persistence.internal.queries.EntityFetchGroup entityFetchGroup
- Caches the EntityFetch group for this FetchGroup
rootEntity
protected FetchGroupTracker rootEntity
- Stores a reference to the root entity for an Aggregate Object relationship.
This ensures that partially loaded aggregates can be triggered.
FetchGroup
public FetchGroup()
FetchGroup
public FetchGroup(java.lang.String name)
getAttributes
@Deprecated
public java.util.Set<java.lang.String> getAttributes()
- Deprecated. Use
AttributeGroup.getAttributeNames()
- Return the attribute names on the current FetchGroup. This does not
include the attributes on nested FetchGroups
onUnfetchedAttribute
public java.lang.String onUnfetchedAttribute(FetchGroupTracker entity,
java.lang.String attributeName)
- INTERNAL:
Called on attempt to get value of an attribute that hasn't been fetched yet.
Returns an error message in case javax.persistence.EntityNotFoundException
should be thrown by the calling method,
null otherwise.
This method is typically only invoked through woven code in the
persistence object introduced when FetchGroupTracker
is woven
into the entity.
onUnfetchedAttributeForSet
public java.lang.String onUnfetchedAttributeForSet(FetchGroupTracker entity,
java.lang.String attributeName)
- INTERNAL:
Called on attempt to assign value to an attribute that hasn't been fetched yet.
Returns an error message in case javax.persistence.EntityNotFoundException
should be thrown by the calling method,
null otherwise.
This method is typically only invoked through woven code in the
persistence object introduced when FetchGroupTracker
is woven
into the entity.
getRootEntity
public FetchGroupTracker getRootEntity()
- INTERNAL:
- Returns:
- the rootEntity
setRootEntity
public void setRootEntity(FetchGroupTracker rootEntity)
- INTERNAL:
- Parameters:
rootEntity
- the rootEntity to set
setShouldLoad
public void setShouldLoad(boolean shouldLoad)
- Configure this group to also act as a
LoadGroup
when set to true
and load all of the specified relationships so that the entities returned
from the query where this group was used have the requested relationships
populated. All subsequent attributes added to this group that create a
nested group will have this value applied to them.
- See Also:
to configure {@link #shouldLoad()} on
nested groups
setSubclassShouldLoad
protected void setSubclassShouldLoad(boolean shouldLoad)
- passes should load to subclasses.
- See Also:
to configure {@link #shouldLoad()} on
nested groups
setShouldLoadAll
public void setShouldLoadAll(boolean shouldLoad)
- Configure this group to also act as a
LoadGroup
the same as
setShouldLoad(boolean)
. Additionally this method will apply the
provided boolean value to all nested groups already added.
- See Also:
to only configure this grup without
effecting existing nested groups.
shouldLoad
public boolean shouldLoad()
- Returns:
- true if this group will be used as a
LoadGroup
when
processing the results of a query to force the specified
relationships to be loaded.
newGroup
protected FetchGroup newGroup(java.lang.String name,
AttributeGroup parent)
- Description copied from class:
AttributeGroup
- Subclass may create different types.
- Overrides:
newGroup
in class AttributeGroup
isFetchGroup
public boolean isFetchGroup()
- Overrides:
isFetchGroup
in class AttributeGroup
isEntityFetchGroup
public boolean isEntityFetchGroup()
toLoadGroupLoadOnly
public LoadGroup toLoadGroupLoadOnly()
clone
public FetchGroup clone()
- Overrides:
clone
in class AttributeGroup
toLoadGroup
public LoadGroup toLoadGroup(java.util.Map<AttributeGroup,LoadGroup> cloneMap,
boolean loadOnly)
- Overrides:
toLoadGroup
in class AttributeGroup
getEntityFetchGroup
public org.eclipse.persistence.internal.queries.EntityFetchGroup getEntityFetchGroup(FetchGroupManager fetchGroupManager)
- INTERNAL:
Used to retrieve the EntityFetchGroup for this FetchGroup
- Returns:
- the entityFetchGroup
getGroup
public FetchGroup getGroup(java.lang.String attributeNameOrPath)
- Returns FetchGroup corresponding to the passed (possibly nested) attribute.
- Overrides:
getGroup
in class AttributeGroup
addAttribute
public void addAttribute(java.lang.String attributeNameOrPath,
AttributeGroup group)
- Description copied from class:
AttributeGroup
- Add a basic attribute or nested attribute with each String representing
an attribute on the path to what needs to be included in the
AttributeGroup.
Example:
group.addAttribute("firstName", group1);
group.addAttribute("manager.address", group2);
Note that existing group corresponding to attributeNameOrPath
will be overridden with the passed group.
- Overrides:
addAttribute
in class AttributeGroup
group
- - an AttributeGroup to be added.
addAttribute
public void addAttribute(java.lang.String attributeNameOrPath,
java.util.Collection<AttributeGroup> groups)
- Description copied from class:
AttributeGroup
- Add an attribute and the corresponding list of AttributeGroups.
Multiple groups are added in the case of inheritance
- Overrides:
addAttribute
in class AttributeGroup
addAttributeKey
public void addAttributeKey(java.lang.String attributeNameOrPath,
AttributeGroup group)
- Description copied from class:
AttributeGroup
- Add a basic attribute or nested attribute with each String representing
the key of an attribute of type Map on the path to what needs to be
included in the AttributeGroup.
Example:
group.addAttribute("firstName", group1);
group.addAttribute("manager.address", group2);
Note that existing group corresponding to attributeNameOrPath will be
overridden with the passed group.
- Overrides:
addAttributeKey
in class AttributeGroup
group
- - an AttributeGroup to be added.