/* * Hibernate, Relational Persistence for Idiomatic Java * * License: GNU Lesser General Public License (LGPL), version 2.1 or later. * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. */ package org.hibernate.annotations; import java.lang.annotation.Repeatable; import java.lang.annotation.Retention; import java.lang.annotation.Target; import static java.lang.annotation.ElementType.PACKAGE; import static java.lang.annotation.ElementType.TYPE; import static java.lang.annotation.RetentionPolicy.RUNTIME; /** * Extends {@link javax.persistence.NamedQuery} with Hibernate features. * * @author Carlos Gonzalez-Cadenas * * @see org.hibernate.Query */ @Target( { TYPE, PACKAGE }) @Retention(RUNTIME) @Repeatable(NamedQueries.class) public @interface NamedQuery { /** * The name of this {@code NamedQuery}. */ String name(); /** * The query string for this {@code NamedQuery}. */ String query(); /** * The flush mode for this query. */ FlushModeType flushMode() default FlushModeType.PERSISTENCE_CONTEXT; /** * Whether the query (results) is cacheable or not. Default is {@code false}, that is not cacheable. */ boolean cacheable() default false; /** * If the query results are cacheable, name the query cache region to use. */ String cacheRegion() default ""; /** * The number of rows fetched by the JDBC Driver per trip. */ int fetchSize() default -1; /** * The query timeout (in seconds). Default is no timeout. */ int timeout() default -1; /** * A comment added to the generated SQL query. Useful when engaging with DBA. */ String comment() default ""; /** * The cache mode used for this query. This refers to entities/collections returned from the query. */ CacheModeType cacheMode() default CacheModeType.NORMAL; /** * Whether the results should be read-only. Default is {@code false}. */ boolean readOnly() default false; }