001: package javax.persistence;
002:
003: import java.util.Calendar;
004: import java.util.Date;
005: import java.util.List;
006:
007: /**
008: * Interface used to control query execution.
009: */
010: public interface Query {
011:
012: /**
013: * Execute the query and return the query results as a List.
014: *
015: * @return List containing the query results
016: */
017: public List getResultList();
018:
019: /**
020: * Execute a query that returns a single result.
021: *
022: * @return The result object
023: * @throws EntityNotFoundException if there is no result
024: * @throws NonUniqueResultException if more than one result
025: */
026: public Object getSingleResult();
027:
028: /**
029: * Execute an update or delete statement.
030: *
031: * @return Update or delete row count
032: */
033: public int executeUpdate();
034:
035: /**
036: * Set the maximum number of results to retrieve.
037: *
038: * @param maxResult The maximum number of results to return
039: * @return The same query instance
040: */
041: public Query setMaxResults(int maxResult);
042:
043: /**
044: * Set the position of the first result to retrieve.
045: *
046: * @param startPosition The position of the first result, numbered from 0
047: * @return The same query instance
048: */
049: public Query setFirstResult(int startPosition);
050:
051: /**
052: * Set an implementation-specific hint.
053: *
054: * @param hintName A vendor-specific key to indicate the hint
055: * @param value A vendor-specific value appropriate for the specified hint key
056: * @return The same query instance
057: */
058: public Query setHint(String hintName, Object value);
059:
060: /**
061: * Bind an argument to a named parameter.
062: *
063: * @param name The parameter name
064: * @param value The value to bind to the parameter name
065: * @return The same query instance
066: */
067: public Query setParameter(String name, Object value);
068:
069: /**
070: * Bind an instance of java.util.Date to a named parameter.
071: *
072: * @param name The parameter name
073: * @param value The Date value to bind to the parameter name
074: * @param temporalType The specific part of the date to use
075: * @return The same query instance
076: */
077: public Query setParameter(String name, Date value,
078: TemporalType temporalType);
079:
080: /**
081: * Bind an instance of java.util.Calendar to a named parameter.
082: *
083: * @param name The parameter name
084: * @param value The Calendar value to bind to the parameter name
085: * @param temporalType The specific part of the Calendar to use
086: * @return The same query instance
087: */
088: public Query setParameter(String name, Calendar value,
089: TemporalType temporalType);
090:
091: /**
092: * Bind an argument to a positional parameter.
093: *
094: * @param position The parameter position (numbered from 0)
095: * @param value The value to bind to the parameter position
096: * @return The same query instance
097: */
098: public Query setParameter(int position, Object value);
099:
100: /**
101: * Bind an instance of java.util.Date to a positional parameter.
102: *
103: * @param position The parameter position (numbered from 0)
104: * @param value The Date value to bind to the parameter position
105: * @param temporalType The specific part of the date to use
106: * @return The same query instance
107: */
108: public Query setParameter(int position, Date value,
109: TemporalType temporalType);
110:
111: /**
112: * Bind an instance of java.util.Calendar to a positional parameter.
113: *
114: * @param position The parameter position (numbered from 0)
115: * @param value The Calendar value to bind to the parameter position
116: * @param temporalType The specific part of the calendar to use
117: * @return The same query instance
118: */
119: public Query setParameter(int position, Calendar value,
120: TemporalType temporalType);
121:
122: /**
123: * Set the flush mode type to be used for the query execution.
124: *
125: * @param flushMode
126: */
127: public Query setFlushMode(FlushModeType flushMode);
128:
129: }
|