/*
 * Copyright (c) 2008, 2009, 2011 Oracle, Inc. All rights reserved.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
 * which accompanies this distribution.  The Eclipse Public License is available
 * at http://www.eclipse.org/legal/epl-v10.html and the Eclipse Distribution License
 * is available at http://www.eclipse.org/org/documents/edl-v10.php.
 */
package javax.persistence;

import java.lang.annotation.Repeatable;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;

import static java.lang.annotation.ElementType.TYPE;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

Specifies the mapping of the result of a native SQL query.

   Example:
   Query q = em.createNativeQuery(
       "SELECT o.id AS order_id, " +
           "o.quantity AS order_quantity, " +
           "o.item AS order_item, " +
           "i.name AS item_name, " +
       "FROM Order o, Item i " +
       "WHERE (order_quantity > 25) AND (order_item = i.id)",
   "OrderResults");
   @SqlResultSetMapping(name="OrderResults",
       entities={
           @EntityResult(entityClass=com.acme.Order.class, fields={
               @FieldResult(name="id", column="order_id"),
               @FieldResult(name="quantity", column="order_quantity"),
               @FieldResult(name="item", column="order_item")})},
       columns={
           @ColumnResult(name="item_name")}
   )
Since:Java Persistence 1.0
/** * Specifies the mapping of the result of a native SQL query. * <p> * <pre> * Example: * * Query q = em.createNativeQuery( * "SELECT o.id AS order_id, " + * "o.quantity AS order_quantity, " + * "o.item AS order_item, " + * "i.name AS item_name, " + * "FROM Order o, Item i " + * "WHERE (order_quantity &gt; 25) AND (order_item = i.id)", * "OrderResults"); * * &#064;SqlResultSetMapping(name="OrderResults", * entities={ * &#064;EntityResult(entityClass=com.acme.Order.class, fields={ * &#064;FieldResult(name="id", column="order_id"), * &#064;FieldResult(name="quantity", column="order_quantity"), * &#064;FieldResult(name="item", column="order_item")})}, * columns={ * &#064;ColumnResult(name="item_name")} * ) * </pre> * * @since Java Persistence 1.0 */
@Target({TYPE}) @Retention(RUNTIME) @Repeatable(SqlResultSetMappings.class) public @interface SqlResultSetMapping {
The name given to the result set mapping, and used to refer to it in the methods of the Query API.
Returns:name
/** * The name given to the result set mapping, and used to refer to it in the methods of the {@link Query} * API. * * @return name */
String name();
Specifies the result set mapping to entities.
Returns:entities
/** * Specifies the result set mapping to entities. * * @return entities */
EntityResult[] entities() default {};
Specifies the result set mapping constructor references
Returns:classes
/** * Specifies the result set mapping constructor references * * @return classes */
ConstructorResult[] classes() default {};
Specifies the result set mapping to scalar values.
Returns:cols
/** * Specifies the result set mapping to scalar values. * * @return cols */
ColumnResult[] columns() default {}; }