-
Notifications
You must be signed in to change notification settings - Fork 14
/
CriteriaQuery.java
75 lines (62 loc) · 3.04 KB
/
CriteriaQuery.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
/**
* Copyright (C) 2020 Czech Technical University in Prague
*
* This program is free software: you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any
* later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details. You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package cz.cvut.kbss.jopa.model.query.criteria;
/**
* Interface used to control the execution of typed queries.
*
* @param <X> Query result type
*/
public interface CriteriaQuery<T>{
/**
* Specify the item that is to be returned in the query result. Replaces the previously specified selection(s), if any.
* @param selection - selection specifying the item that is to be returned in the query result
* @return the modified query
*/
CriteriaQuery<T> select(Selection<? extends T> selection) throws Exception;
/**
* Modify the query to restrict the query result according to the specified boolean expression. Replaces the previously added restriction(s), if any.
* @param expression - a simple or compound boolean expression
* @return the modified query
*/
CriteriaQuery<T> where(Expression<Boolean> expression);
/**
* Modify the query to restrict the query result according to the conjunction of the specified restriction predicates. Replaces the previously added restriction(s), if any. If no restrictions are specified, any previously added restrictions are simply removed.
* @param predicates - zero or more restriction predicates
* @return
*/
CriteriaQuery<T> where(Predicate... predicates);
Class<T> getResultType();
/**
* Specify whether duplicate query results will be eliminated. A true value will cause duplicates to be eliminated. A false value will cause duplicates to be retained. If distinct has not been specified, duplicate results must be retained.
* @param distinct - boolean value specifying whether duplicate results must be eliminated from the query result or whether they must be retained
* @return the modified query
*/
CriteriaQuery<T> distinct(boolean distinct);
/**
* Return whether duplicate query results must be eliminated or retained.
* @return boolean indicating whether duplicate query results must be eliminated
*/
boolean isDistinct();
/**
* Return the selection of the query, or null if no selection has been set.
* @return selection item
*/
Selection<T> getSelection();
/**
* Return the predicate that corresponds to the where clause restriction(s), or null if no restrictions have been specified.
* @return where clause predicate
*/
Predicate getRestriction();
}