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.
See Also:
Author:
Doug Clarke
  • Field Details

    • ShouldReturnReportResult

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

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

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

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

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

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

      public static final int ShouldSelectValue1
      For example, ... EXISTS( SELECT 1 FROM ...
      See Also:
    • 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:
    • FIRST_PRIMARY_KEY

      public static final int FIRST_PRIMARY_KEY
      See Also:
    • NO_PRIMARY_KEY

      public static final int NO_PRIMARY_KEY
      See Also:
    • 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<org.eclipse.persistence.internal.queries.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 Details

    • 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 Details

    • 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:
    • 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

      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

      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

      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

      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:
    • 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(org.eclipse.persistence.internal.sessions.AbstractRecord row)
      INTERNAL: By default return the row. Used by cursored stream.
      Overrides:
      buildObject in class ObjectLevelReadQuery
    • buildObject

      public Object buildObject(org.eclipse.persistence.internal.sessions.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.
    • checkEarlyReturnLocal

      protected Object checkEarlyReturnLocal(org.eclipse.persistence.internal.sessions.AbstractSession session, org.eclipse.persistence.internal.sessions.AbstractRecord translationRow)
      INTERNAL: The cache check is done before the prepare as a hit will not require the work to be done.
      Overrides:
      checkEarlyReturnLocal in class ReadAllQuery
    • checkForCustomQuery

      protected DatabaseQuery checkForCustomQuery(org.eclipse.persistence.internal.sessions.AbstractSession session, org.eclipse.persistence.internal.sessions.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
    • extractRemoteResult

      public Object extractRemoteResult(org.eclipse.persistence.internal.sessions.remote.Transporter transporter)
      INTERNAL: Extract the correct query result from the transporter.
      Overrides:
      extractRemoteResult in class ReadAllQuery
    • 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<org.eclipse.persistence.internal.queries.ReportItem> getItems()
      INTERNAL:
      Returns:
      ReportItems defining the attributes to be read.
    • getItem

      public org.eclipse.persistence.internal.queries.ReportItem getItem(String name)
      INTERNAL:
      Returns:
      ReportItems with the name
    • setItems

      public void setItems(List<org.eclipse.persistence.internal.queries.ReportItem> items)
      INTERNAL: Set the ReportQueryItems defining the attributes to be read.
    • setLockModeType

      public boolean setLockModeType(String lockModeType, org.eclipse.persistence.internal.sessions.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
    • prepare

      protected void prepare() throws QueryException
      INTERNAL: Prepare the receiver for execution in a session. Initialize each item with its DTF mapping
      Overrides:
      prepare in class ReadAllQuery
      Throws:
      QueryException
    • prepareFetchGroup

      public void prepareFetchGroup() throws QueryException
      INTERNAL: ReportQuery doesn't support fetch groups.
      Overrides:
      prepareFetchGroup in class ObjectLevelReadQuery
      Throws:
      QueryException
    • 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.
    • prepareSelectAllRows

      protected void prepareSelectAllRows()
      INTERNAL: Prepare the mechanism.
      Overrides:
      prepareSelectAllRows in class ReadAllQuery
    • prepareSubSelect

      public void prepareSubSelect(org.eclipse.persistence.internal.sessions.AbstractSession session, org.eclipse.persistence.internal.sessions.AbstractRecord translationRow, Map clonedExpressions) throws QueryException
      INTERNAL: Prepare the receiver for being printed inside a subselect. This prepares the statement but not the call.
      Throws:
      QueryException
    • replaceValueHoldersIn

      public Map replaceValueHoldersIn(Object object, org.eclipse.persistence.internal.sessions.remote.RemoteSessionController controller)
      INTERNAL: replace the value holders in the specified result object(s)
      Overrides:
      replaceValueHoldersIn in class ReadAllQuery
    • 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.