blob: 4b4e77f87dfa7c26831766525e610194cf3e95ad [file] [log] [blame]
/*
* Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0,
* or the Eclipse Distribution License v. 1.0 which is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
*/
// Contributors:
// James Sutherland - initial impl
package org.eclipse.persistence.config;
import org.eclipse.persistence.sessions.DataRecord;
/**
* Result type hint values.
*
* The class contains all the valid values for QueryHints.RESULT_TYPE query hint.
* By default in JPA for non-single select queries an Array of values is returned.
* If getSingleResult() is called the first array is returned, for getResultList() a List of arrays is returned.
* <p>i.e. "Select e.firstName, e.lastName from Employee e" returns {@literal List<Object[]>}
* <p>or the native query, "SELECT * FROM EMPLOYEE" returns {@literal List<Object[]>}
* <p>The ResultType can be used to instead return a Map of values (DatabaseRecord, ReportQueryResult).
* <p>It can also be used to return a single column, or single value.
*
* JPA Query Hint Usage:
*
* <p><code>query.setHint(QueryHints.RESULT_TYPE, ResultType.Map);</code>
* <p>or
* <p><code>@QueryHint(name=QueryHints.RESULT_TYPE, value=ResultType.Map)</code>
*
* <p>Hint values are case-insensitive.
* "" could be used instead of default value ResultType.Array.
*
* @see QueryHints#RESULT_TYPE
* @see DataRecord
* @see org.eclipse.persistence.sessions.DatabaseRecord
* @see org.eclipse.persistence.queries.ReportQueryResult
* @see org.eclipse.persistence.queries.ReportQuery#setReturnType(int)
* @see org.eclipse.persistence.queries.DataReadQuery#setResultType
*
* @author James Sutherland
*/
public class ResultType {
/**
* An Object array of values is returned {@literal (List<Object[]> or Object[])}.
*/
public static final String Array = "Array";
/**
* A Map of key value pairs is returned.
* For a native queries the keys are the column names, ({@literal List<DatabaseRecord>}, or DatabaseRecord).
* For JPQL queries the keys are the attribute names, ({@literal List<ReportQueryResult>}, or ReportQueryResult).
*/
public static final String Map = "Map";
/**
* A List of the first selected value is returned.
*/
public static final String Attribute = "Attribute";
/**
* The first value of the first rows is returned.
*/
public static final String Value = "Value";
/**
* The default type is Array.
*/
public static final String DEFAULT = Array;
}