diff --git a/platform-dao/src/main/java/ua/com/fielden/platform/entity/query/EntityRetrievalModel.java b/platform-dao/src/main/java/ua/com/fielden/platform/entity/query/EntityRetrievalModel.java
index a19e086066..8f20e4c712 100644
--- a/platform-dao/src/main/java/ua/com/fielden/platform/entity/query/EntityRetrievalModel.java
+++ b/platform-dao/src/main/java/ua/com/fielden/platform/entity/query/EntityRetrievalModel.java
@@ -59,42 +59,21 @@
*
*
*
Fetch categories
+ * See the documentation {@link FetchCategory} for a description of each category.
+ *
+ * Some categories deserve more detail:
*
- * - {@link FetchCategory#NONE} - nothing is included.
- *
- {@link FetchCategory#ID_ONLY} - sole property {@code id} is included.
- *
- {@link FetchCategory#ID_AND_VERSION} - if entity's nature is
- *
- * - persistent
- *
- * - {@code id} and {@code version} are included;
- *
- if entity is activatable, {@code refCount} and {@code active} are included;
- *
- if entity has a group of "last updated by" properties (see {@link AbstractPersistentEntity}), they are included;
- *
- * - other
- *
- * - if entity has an entity-typed key, {@code id} is included (it is not clearly understood why, but,
- * most likely, to support synthetic entities with entity-typed keys).
- *
- *
* - {@link FetchCategory#KEY_AND_DESC}
*
- * - if entity is persistent, includes {@link FetchCategory#ID_AND_VERSION};
- *
- if entity is synthetic-based-on-persistent, includes {@code id};
- *
- if entity has property {@code desc}, includes it;
*
- includes {@code key} without exploring it further (however, see the section on processing of {@code key});
*
* - {@link FetchCategory#DEFAULT}
*
- * - collectional properties are excluded;
- *
- non-retrievable properties are excluded;
- *
- calculated properties are excluded (unless they have a component type);
*
- if entity has a simple entity-typed (but not a union) {@code key}, then it is explored further;
*
- if entity has a composite key, then all entity-typed (but not a union) key members are explored further;
- *
- everything else is included.
*
* - {@link FetchCategory#ALL} - equivalent to {@link FetchCategory#DEFAULT} but without special handling of entity-typed
* keys and key members.
- *
- {@link FetchCategory#ALL_INCL_CALC} - equivalent to {@link FetchCategory#ALL} but also includes calculated properties.
*
*
* Processing of property {@code key}
diff --git a/platform-pojo-bl/src/main/java/ua/com/fielden/platform/entity/fetch/IFetchProvider.java b/platform-pojo-bl/src/main/java/ua/com/fielden/platform/entity/fetch/IFetchProvider.java
index 3116de8bc6..eb2ad93a76 100644
--- a/platform-pojo-bl/src/main/java/ua/com/fielden/platform/entity/fetch/IFetchProvider.java
+++ b/platform-pojo-bl/src/main/java/ua/com/fielden/platform/entity/fetch/IFetchProvider.java
@@ -12,8 +12,8 @@
*
* Note: all methods throw {@link IllegalArgumentException} in case of malformed dotNotationProperties
(if the property does not exist etc.).
*
+ * @see fetch
* @author TG Team
- *
*/
public interface IFetchProvider> {
/**
diff --git a/platform-pojo-bl/src/main/java/ua/com/fielden/platform/entity/query/fluent/fetch.java b/platform-pojo-bl/src/main/java/ua/com/fielden/platform/entity/query/fluent/fetch.java
index 2018ea7fe9..83c74e3c4b 100644
--- a/platform-pojo-bl/src/main/java/ua/com/fielden/platform/entity/query/fluent/fetch.java
+++ b/platform-pojo-bl/src/main/java/ua/com/fielden/platform/entity/query/fluent/fetch.java
@@ -27,17 +27,70 @@
* Represents an entity graph that describes the shape of an entity to be fetched.
*
* @param entity type
+ * @see FetchCategory
+ * @see ua.com.fielden.platform.entity.query.IRetrievalModel
*/
public class fetch> {
public static final String ERR_MISMATCH_BETWEEN_PROPERTY_AND_FETCH_MODEL_TYPES = "Mismatch between actual type [%s] of property [%s] in entity type [%s] and its fetch model type [%s]!";
+ /**
+ * Standard fetch categories.
+ */
public enum FetchCategory {
+ /**
+ *
+ * Equivalent to {@link #ALL} but also includes calculated properties.
+ */
ALL_INCL_CALC,
- ALL,
- DEFAULT,
- KEY_AND_DESC,
- ID_AND_VERSION,
- ID_ONLY,
+ /**
+ *
+ * - collectional properties are excluded;
+ *
- non-retrievable properties are excluded;
+ *
- calculated properties are excluded (unless they have a component type);
+ *
- everything else is included.
+ *
+ */
+ ALL,
+ /**
+ * Equivalent to {@link #ALL} but with narrower sub-fetch models - only simple keys and key members may have
+ * a sub-fetch model other than {@link #ID_ONLY}.
+ */
+ DEFAULT,
+ /**
+ *
+ * - if entity is persistent, includes {@link #ID_AND_VERSION};
+ *
- if entity is synthetic-based-on-persistent, includes {@code id};
+ *
- if entity has property {@code desc}, includes it;
+ *
- includes {@code key};
+ *
+ */
+ KEY_AND_DESC,
+ /**
+ * A slightly broader fetch model than {@link #ID_ONLY}.
+ * If entity's nature is
+ *
+ * - persistent
+ *
+ * - {@code id} and {@code version} are included;
+ *
- if entity is activatable, {@code refCount} and {@code active} are included;
+ *
- if entity has a group of "last updated by" properties (see {@link ua.com.fielden.platform.entity.AbstractPersistentEntity}),
+ * they are included;
+ *
+ * - other
+ *
+ * - if entity has an entity-typed key, {@code id} is included (it is not clearly understood why, but,
+ * most likely, to support synthetic entities with entity-typed keys).
+ *
+ *
+ */
+ ID_AND_VERSION,
+ /**
+ * Sole property {@code id} is included.
+ */
+ ID_ONLY,
+ /**
+ * No properties are included.
+ */
NONE
}