|  | /******************************************************************************* | 
|  | * Copyright (c) 2008 - 2013 Oracle Corporation. 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. | 
|  | * | 
|  | * Contributors: | 
|  | *     Linda DeMichiel - Java Persistence 2.1 | 
|  | *     Linda DeMichiel - Java Persistence 2.0 | 
|  | * | 
|  | ******************************************************************************/ | 
|  | package javax.persistence; | 
|  |  | 
|  | import java.lang.annotation.Target; | 
|  | import java.lang.annotation.Retention; | 
|  | 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 or stored | 
|  | * procedure. | 
|  | * | 
|  | * <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 > 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")} | 
|  | *    ) | 
|  | * </pre> | 
|  | * | 
|  | * @see Query | 
|  | * @see StoredProcedureQuery | 
|  | * @see NamedNativeQuery | 
|  | * @see NamedStoredProcedureQuery | 
|  | * | 
|  | * @since Java Persistence 1.0 | 
|  | */ | 
|  | @Target({TYPE}) | 
|  | @Retention(RUNTIME) | 
|  | public @interface SqlResultSetMapping { | 
|  |  | 
|  | /** | 
|  | * The name given to the result set mapping, and used to refer | 
|  | * to it in the methods of the {@link Query} and | 
|  | * {@link StoredProcedureQuery} APIs. | 
|  | */ | 
|  | String name(); | 
|  |  | 
|  | /** Specifies the result set mapping to entities. */ | 
|  | EntityResult[] entities() default {}; | 
|  |  | 
|  | /** | 
|  | * Specifies the result set mapping to constructors. | 
|  | * @since Java Persistence 2.1 | 
|  | */ | 
|  | ConstructorResult[] classes() default {}; | 
|  |  | 
|  | /** Specifies the result set mapping to scalar values. */ | 
|  | ColumnResult[] columns() default {}; | 
|  | } |