1 /* 2 * AutoDAO - Generic DAO on steroids implementation for Java. 3 * 4 * Copyright 2008-2012 Marat Radchenko <slonopotamus@users.sourceforge.net> 5 * 6 * Licensed under the Apache License, Version 2.0 (the "License"); 7 * you may not use this file except in compliance with the License. 8 * You may obtain a copy of the License at 9 * 10 * http://www.apache.org/licenses/LICENSE-2.0 11 * 12 * Unless required by applicable law or agreed to in writing, software 13 * distributed under the License is distributed on an "AS IS" BASIS, 14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 * See the License for the specific language governing permissions and 16 * limitations under the License. 17 */ 18 package net.sf.autodao; 19 20 import java.lang.annotation.Documented; 21 import java.lang.annotation.ElementType; 22 import java.lang.annotation.Retention; 23 import java.lang.annotation.RetentionPolicy; 24 import java.lang.annotation.Target; 25 import java.util.Collection; 26 import java.util.List; 27 28 import org.intellij.lang.annotations.Language; 29 30 /** 31 * Annotation for DAO finder methods. 32 * 33 * @since AutoDAO 0.5 34 */ 35 @Documented 36 @Retention(RetentionPolicy.RUNTIME) 37 @Target(ElementType.METHOD) 38 public @interface Finder { 39 /** 40 * Use this parameter to specify named query name. 41 * 42 * @return named query name. 43 */ 44 String queryName() default ""; 45 46 /** 47 * Use this parameter to specify HQL query. 48 * 49 * @return HQL query. 50 */ 51 String query() default ""; 52 53 /** 54 * Use this parameter to specify SQL native query name. 55 * 56 * @return SQL query name. 57 * @since AutoDAO 0.9 58 */ 59 String sqlQueryName() default ""; 60 61 /** 62 * Use this parameter to specify SQL native query. 63 * 64 * @return SQL query. 65 * @since AutoDAO 0.9 66 */ 67 @Language("SQL") String sqlQuery() default ""; 68 69 /** 70 * Use this parameter if finder method wants to return custom collection type. 71 * 72 * <p>The only requirements for specified type are: no-arg constructor and implemented {@link 73 * Collection#addAll(java.util.Collection)} method. 74 * 75 * <p>Example: 76 * <pre> 77 * @Finder(query = "from Book where id in (:ids)", returnAs = HashSet.class) 78 * Set<Book> findByIds(@Named("ids") Set<Long> ids); 79 * </pre> 80 * 81 * @return result collection type. 82 */ 83 @SuppressWarnings("rawtypes") Class<? extends Collection> returnAs() default List.class; 84 }