Class ReportQuery

  • All Implemented Interfaces:
    Serializable, Cloneable

    public class ReportQuery
    extends ReadAllQuery
    Purpose: Query for information about a set of objects instead of the objects themselves. This supports select single attributes, nested attributes, aggregation functions and group bys.

    Attribute Types:

    1. addAttribute("directQueryKey") is a short cut method to add an attribute with the same name as its corresponding direct query key.
    2. addAttribute("attributeName", expBuilder.get("oneToOneMapping").get("directQueryKey")) is the full approach for get values through joined 1:1 relationships.
    3. addAttribute("attributeName", expBuilder.getField("TABLE.FIELD")) allows the addition of raw values or values which were not mapped in the object model directly (i.e. FK attributes).
    4. addAttribute("attributeName", null) Leave a place holder (NULL) value in the result (used for included values from other systems or calculated values).
    Retrieving Primary Keys: It is possible to retrieve the primary key raw values within each result, but stored in a separate (internal) vector. This primary key vector can later be used to retrieve the real object.
    Since:
    TOPLink/Java 2.0
    Author:
    Doug Clarke
    See Also:
    If the values are wanted in the result array then they must be added as attributes. For primary keys which are not mapped directly you can add them as DatabaseFields (see above)., Serialized Form
    • Field Detail

      • ShouldReturnReportResult

        public static final int ShouldReturnReportResult
        Default, returns ReportQueryResult objects.
        See Also:
        Constant Field Values
      • ShouldReturnSingleResult

        public static final int ShouldReturnSingleResult
        Simplifies the result by only returning the first result.
        See Also:
        Constant Field Values
      • ShouldReturnSingleValue

        public static final int ShouldReturnSingleValue
        Simplifies the result by only returning one value.
        See Also:
        Constant Field Values
      • ShouldReturnSingleAttribute

        public static final int ShouldReturnSingleAttribute
        Simplifies the result by only returning the single attribute(as opposed to wrapping in a ReportQueryResult).
        See Also:
        Constant Field Values
      • ShouldReturnWithoutReportQueryResult

        public static final int ShouldReturnWithoutReportQueryResult
        For EJB 3 support returns results without using the ReportQueryResult
        See Also:
        Constant Field Values
      • ShouldReturnArray

        public static final int ShouldReturnArray
        For EJB 3 support returns results as an Object array.
        See Also:
        Constant Field Values
      • ShouldSelectValue1

        public static final int ShouldSelectValue1
        For example, ... EXISTS( SELECT 1 FROM ...
        See Also:
        Constant Field Values
      • FULL_PRIMARY_KEY

        public static final int FULL_PRIMARY_KEY
        Specifies whether to retrieve primary keys, first primary key, or no primary key.
        See Also:
        Constant Field Values
      • shouldRetrievePrimaryKeys

        protected int shouldRetrievePrimaryKeys
        Flag indicating whether the primary key values should also be retrieved for the reference class.
      • names

        protected List<String> names
        Collection of names for use by results.
      • items

        protected List<ReportItem> items
        Items to be selected, these could be attributes or aggregate functions.
      • groupByExpressions

        protected List<Expression> groupByExpressions
        Expressions representing fields to be used in the GROUP BY clause.
      • havingExpression

        protected Expression havingExpression
        Expression representing the HAVING clause.
      • returnChoice

        protected int returnChoice
        Can be one of (ShouldReturnSingleResult, ShouldReturnSingleValue, ShouldReturnSingleAttribute) Simplifies the result by only returning the first result, first value, or all attribute values
      • addToConstructorItem

        protected boolean addToConstructorItem
        flag to allow items to be added to the last ConstructorReportItem
      • returnedKeys

        protected Set<Object> returnedKeys
    • Constructor Detail

      • ReportQuery

        public ReportQuery()
        INTERNAL: The builder should be provided.
      • ReportQuery

        public ReportQuery​(Class javaClass,
                           Expression expression)
      • ReportQuery

        public ReportQuery​(Class javaClass,
                           ExpressionBuilder builder)
        PUBLIC: The report query is require to be constructor with an expression builder. This build must be used for the selection critiera, any item expressions, group bys and order bys.
      • ReportQuery

        public ReportQuery​(ExpressionBuilder builder)
        PUBLIC: The report query is require to be constructor with an expression builder. This build must be used for the selection critiera, any item expressions, group bys and order bys.
    • Method Detail

      • addAttribute

        public void addAttribute​(String itemName)
        PUBLIC: Add the attribute from the reference class to be included in the result. EXAMPLE: reportQuery.addAttribute("firstName");
      • addAttribute

        public void addAttribute​(String itemName,
                                 Expression attributeExpression)
        PUBLIC: Add the attribute to be included in the result. EXAMPLE: reportQuery.addAttribute("city", expBuilder.get("address").get("city"));
      • addAttribute

        public void addAttribute​(String itemName,
                                 Expression attributeExpression,
                                 Class type)
        PUBLIC: Add the attribute to be included in the result. Return the result as the provided class EXAMPLE: reportQuery.addAttribute("city", expBuilder.get("period").get("startTime"), Time.class);
      • addAverage

        public void addAverage​(String itemName)
        PUBLIC: Add the average value of the attribute to be included in the result. Aggregation functions can be used with a group by, or on the entire result set. EXAMPLE: reportQuery.addAverage("salary");
      • addAverage

        public void addAverage​(String itemName,
                               Class resultType)
        PUBLIC: Add the average value of the attribute to be included in the result and return it as the specified resultType. Aggregation functions can be used with a group by, or on the entire result set. EXAMPLE: reportQuery.addAverage("salary", Float.class);
      • addAverage

        public void addAverage​(String itemName,
                               Expression attributeExpression)
        PUBLIC: Add the average value of the attribute to be included in the result. Aggregation functions can be used with a group by, or on the entire result set. EXAMPLE: reportQuery.addAverage("managerSalary", expBuilder.get("manager").get("salary"));
      • addAverage

        public void addAverage​(String itemName,
                               Expression attributeExpression,
                               Class resultType)
        PUBLIC: Add the average value of the attribute to be included in the result and return it as the specified resultType. Aggregation functions can be used with a group by, or on the entire result set. EXAMPLE: reportQuery.addAverage("managerSalary", expBuilder.get("manager").get("salary"), Double.class);
      • addConstructorReportItem

        public void addConstructorReportItem​(ConstructorReportItem item)
        PUBLIC: Add a ConstructorReportItem to this query's set of return values.
        Parameters:
        item - used to specify a class constructor and values to pass in from this query
        See Also:
        ConstructorReportItem
      • addCount

        public void addCount()
        PUBLIC: Include the number of rows returned by the query in the result. Aggregation functions can be used with a group by, or on the entire result set. EXAMPLE: Java: reportQuery.addCount(); SQL: SELECT COUNT (*) FROM ...
        See Also:
        addCount(java.lang.String)
      • addCount

        public void addCount​(String attributeName)
        PUBLIC: Include the number of rows returned by the query in the result, where attributeExpression is not null. Aggregation functions can be used with a group by, or on the entire result set.

        Example:

         TopLink:    reportQuery.addCount("id");
         SQL: SELECT COUNT (t0.EMP_ID) FROM EMPLOYEE t0, ...
         
        Parameters:
        attributeName - the number of rows where attributeName is not null will be returned.
        See Also:
        addCount(java.lang.String, org.eclipse.persistence.expressions.Expression)
      • addCount

        public void addCount​(String attributeName,
                             Class resultType)
        PUBLIC: Include the number of rows returned by the query in the result, where attributeExpression is not null. Aggregation functions can be used with a group by, or on the entire result set. Set the count to be returned as the specified resultType.

        Example:

         TopLink:    reportQuery.addCount("id", Long.class);
         SQL: SELECT COUNT (t0.EMP_ID) FROM EMPLOYEE t0, ...
         
        Parameters:
        attributeName - the number of rows where attributeName is not null will be returned.
        See Also:
        addCount(java.lang.String, org.eclipse.persistence.expressions.Expression)
      • addCount

        public void addCount​(String itemName,
                             Expression attributeExpression)
        PUBLIC: Include the number of rows returned by the query in the result, where attributeExpression is not null. Aggregation functions can be used with a group by, or on the entire result set.

        Example:

         TopLink:    reportQuery.addCount("Count", getExpressionBuilder().get("id"));
         SQL: SELECT COUNT (t0.EMP_ID) FROM EMPLOYEE t0, ...
         

        Example: counting only distinct values of an attribute.

          TopLink: reportQuery.addCount("Count", getExpressionBuilder().get("address").distinct());
          SQL: SELECT COUNT (DISTINCT t0.ADDR_ID) FROM EMPLOYEE t0, ...
         
        objectAttributes can be specified also, even accross many to many mappings.
        See Also:
        addCount()
      • addCount

        public void addCount​(String itemName,
                             Expression attributeExpression,
                             Class resultType)
        PUBLIC: Include the number of rows returned by the query in the result, where attributeExpression is not null. Aggregation functions can be used with a group by, or on the entire result set. Set the count to be returned as the specified resultType.

        Example:

         TopLink:    reportQuery.addCount("Count", getExpressionBuilder().get("id"), Integer.class);
         SQL: SELECT COUNT (t0.EMP_ID) FROM EMPLOYEE t0, ...
         

        Example: counting only distinct values of an attribute.

          TopLink: reportQuery.addCount("Count", getExpressionBuilder().get("address").distinct());
          SQL: SELECT COUNT (DISTINCT t0.ADDR_ID) FROM EMPLOYEE t0, ...
         
        objectAttributes can be specified also, even accross many to many mappings.
        See Also:
        addCount()
      • addFunctionItem

        public void addFunctionItem​(String itemName,
                                    Expression attributeExpression,
                                    String functionName)
        ADVANCED: Add the function against the attribute expression to be included in the result. Aggregation functions can be used with a group by, or on the entire result set. Example: reportQuery.addFunctionItem("average", expBuilder.get("salary"), "average");
      • addGrouping

        public void addGrouping​(String attributeName)
        PUBLIC: Add the attribute to the group by expressions. This will group the result set on that attribute and is normally used in conjunction with aggregation functions. Example: reportQuery.addGrouping("lastName")
      • addGrouping

        public void addGrouping​(Expression expression)
        PUBLIC: Add the attribute expression to the group by expressions. This will group the result set on that attribute and is normally used in conjunction with aggregation functions. Example: reportQuery.addGrouping(expBuilder.get("address").get("country"))
      • setHavingExpression

        public void setHavingExpression​(Expression expression)
        PUBLIC: Add the expression to the query to be used in the HAVING clause. This epression will be used to filter the result sets after they are grouped. It must be used in conjunction with the GROUP BY clause.

        Example:

        reportQuery.setHavingExpression(expBuilder.get("address").get("country").equal("Canada"))

      • addItem

        public void addItem​(String itemName,
                            Expression attributeExpression)
        ADVANCED: Add the expression value to be included in the result. EXAMPLE: reportQuery.addItem("name", expBuilder.get("firstName").toUpperCase());
      • addItem

        public void addItem​(String itemName,
                            Expression attributeExpression,
                            List joinedExpressions)
        ADVANCED: Add the expression value to be included in the result. EXAMPLE: reportQuery.addItem("name", expBuilder.get("firstName").toUpperCase());
      • addItem

        protected void addItem​(String itemName,
                               Expression attributeExpression,
                               Class resultType)
        INTERNAL: Add the expression value to be included in the result. EXAMPLE: reportQuery.addItem("name", expBuilder.get("firstName").toUpperCase()); The resultType can be specified to support EJBQL that adheres to the EJB 3.0 spec.
      • addMaximum

        public void addMaximum​(String itemName)
        PUBLIC: Add the maximum value of the attribute to be included in the result. Aggregation functions can be used with a group by, or on the entire result set. EXAMPLE: reportQuery.addMaximum("salary");
      • addMaximum

        public void addMaximum​(String itemName,
                               Class resultType)
        PUBLIC: Add the maximum value of the attribute to be included in the result. Aggregation functions can be used with a group by, or on the entire result set. EXAMPLE: reportQuery.addMaximum("salary", Integer.class);
      • addMaximum

        public void addMaximum​(String itemName,
                               Expression attributeExpression)
        PUBLIC: Add the maximum value of the attribute to be included in the result. Aggregation functions can be used with a group by, or on the entire result set. EXAMPLE: reportQuery.addMaximum("managerSalary", expBuilder.get("manager").get("salary"));
      • addMaximum

        public void addMaximum​(String itemName,
                               Expression attributeExpression,
                               Class resultType)
        PUBLIC: Add the maximum value of the attribute to be included in the result. Aggregation functions can be used with a group by, or on the entire result set. EXAMPLE: reportQuery.addMaximum("managerSalary", expBuilder.get("manager").get("salary"), Integer.class);
      • addMinimum

        public void addMinimum​(String itemName)
        PUBLIC: Add the minimum value of the attribute to be included in the result. Aggregation functions can be used with a group by, or on the entire result set. EXAMPLE: reportQuery.addMinimum("salary");
      • addMinimum

        public void addMinimum​(String itemName,
                               Class resultType)
        PUBLIC: Add the minimum value of the attribute to be included in the result. Aggregation functions can be used with a group by, or on the entire result set. EXAMPLE: reportQuery.addMinimum("salary", Integer.class);
      • addMinimum

        public void addMinimum​(String itemName,
                               Expression attributeExpression)
        PUBLIC: Add the minimum value of the attribute to be included in the result. Aggregation functions can be used with a group by, or on the entire result set. EXAMPLE: reportQuery.addMinimum("managerSalary", expBuilder.get("manager").get("salary"));
      • addMinimum

        public void addMinimum​(String itemName,
                               Expression attributeExpression,
                               Class resultType)
        PUBLIC: Add the minimum value of the attribute to be included in the result. Aggregation functions can be used with a group by, or on the entire result set. EXAMPLE: reportQuery.addMinimum("managerSalary", expBuilder.get("manager").get("salary"), Integer.class);
      • addStandardDeviation

        public void addStandardDeviation​(String itemName)
        PUBLIC: Add the standard deviation value of the attribute to be included in the result. Aggregation functions can be used with a group by, or on the entire result set. EXAMPLE: reportQuery.addStandardDeviation("salary");
      • addStandardDeviation

        public void addStandardDeviation​(String itemName,
                                         Expression attributeExpression)
        PUBLIC: Add the standard deviation value of the attribute to be included in the result. Aggregation functions can be used with a group by, or on the entire result set. EXAMPLE: reportQuery.addStandardDeviation("managerSalary", expBuilder.get("manager").get("salary"));
      • addSum

        public void addSum​(String itemName)
        PUBLIC: Add the sum value of the attribute to be included in the result. Aggregation functions can be used with a group by, or on the entire result set. EXAMPLE: reportQuery.addSum("salary");
      • addSum

        public void addSum​(String itemName,
                           Class resultType)
        PUBLIC: Add the sum value of the attribute to be included in the result and return it as the specified resultType. Aggregation functions can be used with a group by, or on the entire result set. EXAMPLE: reportQuery.addSum("salary", Float.class);
      • addSum

        public void addSum​(String itemName,
                           Expression attributeExpression)
        PUBLIC: Add the sum value of the attribute to be included in the result. Aggregation functions can be used with a group by, or on the entire result set. EXAMPLE: reportQuery.addSum("managerSalary", expBuilder.get("manager").get("salary"));
      • addSum

        public void addSum​(String itemName,
                           Expression attributeExpression,
                           Class resultType)
        PUBLIC: Add the sum value of the attribute to be included in the result and return it as the specified resultType. Aggregation functions can be used with a group by, or on the entire result set. EXAMPLE: reportQuery.addSum("managerSalary", expBuilder.get("manager").get("salary"), Float.class);
      • addVariance

        public void addVariance​(String itemName)
        PUBLIC: Add the variance value of the attribute to be included in the result. Aggregation functions can be used with a group by, or on the entire result set. EXAMPLE: reportQuery.addVariance("salary");
      • addVariance

        public void addVariance​(String itemName,
                                Expression attributeExpression)
        PUBLIC: Add the variance value of the attribute to be included in the result. Aggregation functions can be used with a group by, or on the entire result set. EXAMPLE: reportQuery.addVariance("managerSalary", expBuilder.get("manager").get("salary"));
      • beginAddingConstructorArguments

        public ConstructorReportItem beginAddingConstructorArguments​(Class constructorClass)
        PUBLIC: Call a constructor for the given class with the results of this query.
        Parameters:
        constructorClass -
      • beginAddingConstructorArguments

        public ConstructorReportItem beginAddingConstructorArguments​(Class constructorClass,
                                                                     Class[] constructorArgTypes)
        PUBLIC: Call a constructor for the given class with the results of this query.
        Parameters:
        constructorClass -
        constructorArgTypes - - sets the argument types to be passed to the constructor.
      • buildObject

        public Object buildObject​(AbstractRecord row,
                                  Vector toManyJoinData)
        INTERNAL: Construct a result from a row. Either return a ReportQueryResult or just the attribute.
        Parameters:
        row -
        toManyJoinData - All rows fetched by query. It is required to be not null.
      • buildObjects

        public Object buildObjects​(Vector rows)
        INTERNAL: Construct a container of ReportQueryResult from the rows. If only one result or value was asked for only return that.
      • checkForCustomQuery

        protected DatabaseQuery checkForCustomQuery​(AbstractSession session,
                                                    AbstractRecord translationRow)
        INTERNAL: Check to see if a custom query should be used for this query. This is done before the query is copied and prepared/executed. null means there is none.
        Overrides:
        checkForCustomQuery in class ObjectLevelReadQuery
        Parameters:
        session - Current session.
        translationRow - Database record.
        Returns:
        Custom database query or null when custom database query is not set.
      • clone

        public Object clone()
        INTERNAL: Clone the query.
        Overrides:
        clone in class ReadAllQuery
        Returns:
        A clone of this instance.
      • copyReportItems

        public void copyReportItems​(Map alreadyDone)
        INTERNAL: Required for a very special case of bug 2612185: ReportItems from parallelExpressions, on a ReportQuery which is a subQuery, which is being batch read. In a batch query the selection criteria is effectively cloned twice, meaning the ReportItems need to be cloned an extra time also to stay in sync. Each call to copiedVersionFrom() will take O(1) time as the expression was already cloned.
      • dontRetrievePrimaryKeys

        public void dontRetrievePrimaryKeys()
        PUBLIC: Set if the query results should contain the primary keys or each associated object. This make retrieving the real object easier. By default they are not retrieved.
      • dontReturnSingleAttribute

        public void dontReturnSingleAttribute()
        PUBLIC: Don't simplify the result by returning the single attribute. Wrap in a ReportQueryResult.
      • dontReturnSingleResult

        public void dontReturnSingleResult()
        PUBLIC: Simplifies the result by only returning the first result. This can be used if it known that only one row is returned by the report query.
      • dontReturnSingleValue

        public void dontReturnSingleValue()
        PUBLIC: Simplifies the result by only returning a single value. This can be used if it known that only one row is returned by the report query and only a single item is added to the report.
      • dontReturnWithoutReportQueryResult

        public void dontReturnWithoutReportQueryResult()
        PUBLIC: Simplifies the result by only returning a single value. This can be used if it known that only one row is returned by the report query and only a single item is added to the report.
      • endAddingToConstructorItem

        public void endAddingToConstructorItem()
        PUBLIC: Used in conjunction with beginAddingConstructorArguments to signal that expressions should no longer be be added to the collection used in the constructor.
      • executeDatabaseQuery

        public Object executeDatabaseQuery()
                                    throws DatabaseException
        INTERNAL: Execute the query. Get the rows and build the objects or report data from the rows.
        Overrides:
        executeDatabaseQuery in class ObjectLevelReadQuery
        Returns:
        either collection of objects, or report data resulting from execution of query.
        Throws:
        DatabaseException - - an error has occurred on the database
      • getGroupByExpressions

        public List<Expression> getGroupByExpressions()
        INTERNAL: Return the group bys.
      • hasGroupByExpressions

        public boolean hasGroupByExpressions()
        INTERNAL: Return if any group bys exist, allow lazy initialization. This should be called before calling getGroupByExpressions().
      • setGroupByExpressions

        public void setGroupByExpressions​(List<Expression> groupByExpressions)
        INTERNAL: Set the group bys.
      • getHavingExpression

        public Expression getHavingExpression()
        INTERNAL: Return the Having expression.
      • getQueryExpressions

        public Vector getQueryExpressions()
        INTERNAL: return a collection of expressions if PK's are used.
      • getDefaultRedirector

        protected QueryRedirector getDefaultRedirector()
        INTERNAL: Returns the specific default redirector for this query type. There are numerous default query redirectors. See ClassDescriptor for their types.
        Overrides:
        getDefaultRedirector in class ReadAllQuery
      • getItems

        public List<ReportItem> getItems()
        INTERNAL:
        Returns:
        ReportItems defining the attributes to be read.
      • getItem

        public ReportItem getItem​(String name)
        INTERNAL:
        Returns:
        ReportItems with the name
      • setItems

        public void setItems​(List<ReportItem> items)
        INTERNAL: Set the ReportQueryItems defining the attributes to be read.
      • setLockModeType

        public boolean setLockModeType​(String lockModeType,
                                       AbstractSession session)
        INTERNAL: Sets a jakarta.persistence.LockModeType to used with this queries execution. The valid types are: - WRITE - READ - OPTIMISTIC - OPTIMISTIC_FORCE_INCREMENT - PESSIMISTIC - PESSIMISTIC_FORCE_INCREMENT - NONE Setting a null type will do nothing.
        Overrides:
        setLockModeType in class ObjectLevelReadQuery
        Returns:
        returns a failure flag indicating that we were UNABLE to set the lock mode because of validation. Callers to this method should check the return value and throw the necessary exception.
      • clearItems

        public void clearItems()
        INTERNAL: Clear the ReportQueryItems
      • getNames

        public List<String> getNames()
        INTERNAL: Lazily initialize and return the names of the items requested for use in each result object.
      • setNames

        protected void setNames​(List<String> names)
        INTERNAL: Set the item names.
      • isReportQuery

        public boolean isReportQuery()
        PUBLIC: Return if this is a report query.
        Overrides:
        isReportQuery in class DatabaseQuery
      • prepareFromQuery

        public void prepareFromQuery​(DatabaseQuery query)
        INTERNAL: Prepare the query from the prepared query. This allows a dynamic query to prepare itself directly from a prepared query instance. This is used in the EJBQL parse cache to allow preparsed queries to be used to prepare dynamic queries. This only copies over properties that are configured through EJBQL.
        Overrides:
        prepareFromQuery in class ReadAllQuery
      • equals

        public boolean equals​(Object object)
        INTERNAL: Return if the query is equal to the other. This is used to allow dynamic expression query SQL to be cached.
        Overrides:
        equals in class ReadAllQuery
      • prepareObjectAttributeCount

        protected void prepareObjectAttributeCount​(Map clonedExpressions)
        INTERNAL: Prepare a report query with a count defined on an object attribute. Added to fix bug 3268040, addCount(objectAttribute) not supported.
      • retrievePrimaryKeys

        public void retrievePrimaryKeys()
        PUBLIC: Set if the query results should contain the primary keys or each associated object. This make retrieving the real object easier. By default they are not retrieved.
      • getReturnType

        public int getReturnType()
        PUBLIC: Return the return type.
      • setReturnType

        public void setReturnType​(int returnChoice)
        PUBLIC: Set the return type. This can be one of several constants,
        • ShouldReturnReportResult - return List<ReportQueryResult> : ReportQueryResult (Map) of each row is returned.
        • ShouldReturnSingleResult - return ReportQueryResult : Only first row is returned.
        • ShouldReturnSingleAttribute - return List<Object> : Only first column of (all) rows are returned.
        • ShouldReturnSingleValue - return Object : Only first value of first row is returned.
        • ShouldReturnWithoutReportQueryResult - return List<Object[]> : Array of each row is returned.
      • returnSingleAttribute

        public void returnSingleAttribute()
        PUBLIC: Simplify the result by returning a single attribute. Don't wrap in a ReportQueryResult.
      • returnSingleResult

        public void returnSingleResult()
        PUBLIC: Simplifies the result by only returning the first result. This can be used if it known that only one row is returned by the report query.
      • returnSingleValue

        public void returnSingleValue()
        PUBLIC: Simplifies the result by only returning a single value. This can be used if it known that only one row is returned by the report query and only a single item is added to the report.
      • returnWithoutReportQueryResult

        public void returnWithoutReportQueryResult()
        PUBLIC: Simplifies the result by only returning a single value. This can be used if it known that only one row is returned by the report query and only a single item is added to the report.
      • selectValue1

        public void selectValue1()
        PUBLIC: Simplifies the result by only returning a single value. This can be used if it known that only one row is returned by the report query and only a single item is added to the report.
      • setShouldRetrievePrimaryKeys

        public void setShouldRetrievePrimaryKeys​(boolean shouldRetrievePrimaryKeys)
        PUBLIC: Set if the query results should contain the primary keys or each associated object. This make retrieving the real object easier. By default they are not retrieved.
      • setShouldRetrieveFirstPrimaryKey

        public void setShouldRetrieveFirstPrimaryKey​(boolean shouldRetrieveFirstPrimaryKey)
        ADVANCED: Sets if the query results should contain the first primary key of each associated object. Usefull if this is an EXISTS subquery and you don't care what fields are returned so long as it is a single field. The default value is false. This should only be used with a subquery.
      • setShouldReturnSingleAttribute

        public void setShouldReturnSingleAttribute​(boolean newChoice)
        PUBLIC: Simplifies the result by only returning the attribute (as opposed to wrapping in a ReportQueryResult). This can be used if it is known that only one attribute is returned by the report query.
      • setShouldReturnSingleResult

        public void setShouldReturnSingleResult​(boolean newChoice)
        PUBLIC: Simplifies the result by only returning the first result. This can be used if it known that only one row is returned by the report query.
      • setShouldReturnSingleValue

        public void setShouldReturnSingleValue​(boolean newChoice)
        PUBLIC: Simplifies the result by only returning a single value. This can be used if it known that only one row is returned by the report query and only a single item is added to the report.
      • setShouldReturnWithoutReportQueryResult

        public void setShouldReturnWithoutReportQueryResult​(boolean newChoice)
        PUBLIC: Simplifies the result by returning a nested list instead of the ReportQueryResult. This is used by EJB 3.
      • shouldRetrievePrimaryKeys

        public boolean shouldRetrievePrimaryKeys()
        PUBLIC: Return if the query results should contain the primary keys or each associated object. This make retrieving the real object easier.
      • shouldRetrieveFirstPrimaryKey

        public boolean shouldRetrieveFirstPrimaryKey()
        PUBLIC: Return if the query results should contain the first primary key of each associated object. Usefull if this is an EXISTS subquery and you don't care what fields are returned so long as it is a single field.
      • shouldReturnSingleAttribute

        public boolean shouldReturnSingleAttribute()
        PUBLIC: Answer if we are only returning the attribute (as opposed to wrapping in a ReportQueryResult). This can be used if it is known that only one attribute is returned by the report query.
      • shouldReturnSingleResult

        public boolean shouldReturnSingleResult()
        PUBLIC: Simplifies the result by only returning the first result. This can be used if it known that only one row is returned by the report query.
      • shouldReturnSingleValue

        public boolean shouldReturnSingleValue()
        PUBLIC: Simplifies the result by only returning a single value. This can be used if it known that only one row is returned by the report query and only a single item is added to the report.
      • shouldReturnWithoutReportQueryResult

        public boolean shouldReturnWithoutReportQueryResult()
        PUBLIC: Simplifies the result by returning a nested list instead of the ReportQueryResult. This is used by EJB 3.
      • shouldReturnArray

        public boolean shouldReturnArray()
        PUBLIC: Returns true if results should be returned as an Object array.
      • shouldSelectValue1

        public boolean shouldSelectValue1()
        PUBLIC: Returns true if results should be returned as an Object array.