19 package org.turro.jpa.query;
21 import java.math.BigDecimal;
22 import java.math.BigInteger;
25 import java.sql.Timestamp;
26 import java.util.Collection;
29 import javax.persistence.Tuple;
30 import javax.persistence.criteria.CollectionJoin;
31 import javax.persistence.criteria.CompoundSelection;
32 import javax.persistence.criteria.CriteriaBuilder;
33 import javax.persistence.criteria.Expression;
34 import javax.persistence.criteria.Join;
35 import javax.persistence.criteria.ListJoin;
36 import javax.persistence.criteria.MapJoin;
37 import javax.persistence.criteria.Order;
38 import javax.persistence.criteria.ParameterExpression;
39 import javax.persistence.criteria.Path;
40 import javax.persistence.criteria.Predicate;
41 import javax.persistence.criteria.Root;
42 import javax.persistence.criteria.Selection;
43 import javax.persistence.criteria.SetJoin;
44 import javax.persistence.criteria.Subquery;
45 import org.turro.jpa.Dao;
46 import org.turro.jpa.DaoManager;
54 private final Dao dao;
55 private CriteriaBuilder criteriaBuilder;
67 return criteriaBuilder;
70 private void initCriteria() {
72 criteriaBuilder = manager.getManager().getCriteriaBuilder();
78 public <T> JpaCriteriaUpdate<T> createCriteriaUpdate(Class<T> targetEntity) {
79 return new JpaCriteriaUpdate<>(targetEntity,
this);
82 public <T> JpaCriteriaDelete<T> createCriteriaDelete(Class<T> targetEntity) {
83 return new JpaCriteriaDelete<>(targetEntity,
this);
86 public <Y> CompoundSelection<Y> construct(Class<Y> resultClass, Selection<?>... selections) {
87 return criteriaBuilder.construct(resultClass, selections);
90 public CompoundSelection<Tuple>
tuple(Selection<?>... selections) {
91 return criteriaBuilder.tuple(selections);
94 public CompoundSelection<Object[]>
array(Selection<?>... selections) {
95 return criteriaBuilder.array(selections);
98 public Order
asc(Expression<?> x) {
99 return criteriaBuilder.asc(x);
102 public Order
desc(Expression<?> x) {
103 return criteriaBuilder.desc(x);
106 public <N extends Number> Expression<Double> avg(Expression<N> x) {
107 return criteriaBuilder.avg(x);
110 public <N extends Number> Expression<N> sum(Expression<N> x) {
111 return criteriaBuilder.sum(x);
114 public Expression<Long>
sumAsLong(Expression<Integer> x) {
115 return criteriaBuilder.sumAsLong(x);
119 return criteriaBuilder.sumAsDouble(x);
122 public <N extends Number> Expression<N> max(Expression<N> x) {
123 return criteriaBuilder.max(x);
126 public <N extends Number> Expression<N> min(Expression<N> x) {
127 return criteriaBuilder.min(x);
130 public <X extends Comparable<? super X>> Expression<X> greatest(Expression<X> x) {
131 return criteriaBuilder.greatest(x);
134 public <X extends Comparable<? super X>> Expression<X> least(Expression<X> x) {
135 return criteriaBuilder.least(x);
138 public Expression<Long>
count(Expression<?> x) {
139 return criteriaBuilder.count(x);
143 return criteriaBuilder.countDistinct(x);
146 public Predicate
exists(Subquery<?> subquery) {
147 return criteriaBuilder.exists(subquery);
150 public <Y> Expression<Y> all(Subquery<Y> subquery) {
151 return criteriaBuilder.all(subquery);
154 public <Y> Expression<Y> some(Subquery<Y> subquery) {
155 return criteriaBuilder.some(subquery);
158 public <Y> Expression<Y> any(Subquery<Y> subquery) {
159 return criteriaBuilder.any(subquery);
162 public Predicate
and(Expression<Boolean> x, Expression<Boolean> y) {
163 return criteriaBuilder.and(x, y);
166 public Predicate
and(Predicate... restrictions) {
167 return criteriaBuilder.and(restrictions);
170 public Predicate
or(Expression<Boolean> x, Expression<Boolean> y) {
171 return criteriaBuilder.or(x, y);
174 public Predicate
or(Predicate... restrictions) {
175 return criteriaBuilder.or(restrictions);
178 public Predicate
not(Expression<Boolean> restriction) {
179 return criteriaBuilder.not(restriction);
183 return criteriaBuilder.conjunction();
187 return criteriaBuilder.disjunction();
190 public Predicate
isTrue(Expression<Boolean> x) {
191 return criteriaBuilder.isTrue(x);
194 public Predicate
isFalse(Expression<Boolean> x) {
195 return criteriaBuilder.isFalse(x);
198 public Predicate
isNull(Expression<?> x) {
199 return criteriaBuilder.isNull(x);
203 return criteriaBuilder.isNotNull(x);
206 public Predicate
equal(Expression<?> x, Expression<?> y) {
207 return criteriaBuilder.equal(x, y);
210 public Predicate
equal(Expression<?> x, Object y) {
211 return criteriaBuilder.equal(x, y);
214 public Predicate
notEqual(Expression<?> x, Expression<?> y) {
215 return criteriaBuilder.notEqual(x, y);
218 public Predicate
notEqual(Expression<?> x, Object y) {
219 return criteriaBuilder.notEqual(x, y);
222 public <Y extends Comparable<? super Y>> Predicate greaterThan(Expression<? extends Y> x, Expression<? extends Y> y) {
223 return criteriaBuilder.greaterThan(x, y);
226 public <Y extends Comparable<? super Y>> Predicate greaterThan(Expression<? extends Y> x, Y y) {
227 return criteriaBuilder.greaterThan(x, y);
230 public <Y extends Comparable<? super Y>> Predicate greaterThanOrEqualTo(Expression<? extends Y> x, Expression<? extends Y> y) {
231 return criteriaBuilder.greaterThanOrEqualTo(x, y);
234 public <Y extends Comparable<? super Y>> Predicate greaterThanOrEqualTo(Expression<? extends Y> x, Y y) {
235 return criteriaBuilder.greaterThanOrEqualTo(x, y);
238 public <Y extends Comparable<? super Y>> Predicate lessThan(Expression<? extends Y> x, Expression<? extends Y> y) {
239 return criteriaBuilder.lessThan(x, y);
242 public <Y extends Comparable<? super Y>> Predicate lessThan(Expression<? extends Y> x, Y y) {
243 return criteriaBuilder.lessThan(x, y);
246 public <Y extends Comparable<? super Y>> Predicate lessThanOrEqualTo(Expression<? extends Y> x, Expression<? extends Y> y) {
247 return criteriaBuilder.lessThanOrEqualTo(x, y);
250 public <Y extends Comparable<? super Y>> Predicate lessThanOrEqualTo(Expression<? extends Y> x, Y y) {
251 return criteriaBuilder.lessThanOrEqualTo(x, y);
254 public <Y extends Comparable<? super Y>> Predicate between(Expression<? extends Y> v, Expression<? extends Y> x, Expression<? extends Y> y) {
255 return criteriaBuilder.between(v, x, y);
258 public <Y extends Comparable<? super Y>> Predicate between(Expression<? extends Y> v, Y x, Y y) {
259 return criteriaBuilder.between(v, x, y);
262 public Predicate
gt(Expression<? extends Number> x, Expression<? extends Number> y) {
263 return criteriaBuilder.gt(x, y);
266 public Predicate
gt(Expression<? extends Number> x, Number y) {
267 return criteriaBuilder.gt(x, y);
270 public Predicate
ge(Expression<? extends Number> x, Expression<? extends Number> y) {
271 return criteriaBuilder.ge(x, y);
274 public Predicate
ge(Expression<? extends Number> x, Number y) {
275 return criteriaBuilder.ge(x, y);
278 public Predicate
lt(Expression<? extends Number> x, Expression<? extends Number> y) {
279 return criteriaBuilder.lt(x, y);
282 public Predicate
lt(Expression<? extends Number> x, Number y) {
283 return criteriaBuilder.lt(x, y);
286 public Predicate
le(Expression<? extends Number> x, Expression<? extends Number> y) {
287 return criteriaBuilder.le(x, y);
290 public Predicate
le(Expression<? extends Number> x, Number y) {
291 return criteriaBuilder.le(x, y);
294 public <N extends Number> Expression<N> neg(Expression<N> x) {
295 return criteriaBuilder.neg(x);
298 public <N extends Number> Expression<N> abs(Expression<N> x) {
299 return criteriaBuilder.abs(x);
302 public <N extends Number> Expression<N> sum(Expression<? extends N> x, Expression<? extends N> y) {
303 return criteriaBuilder.sum(x, y);
306 public <N extends Number> Expression<N> sum(Expression<? extends N> x, N y) {
307 return criteriaBuilder.sum(x, y);
310 public <N extends Number> Expression<N> sum(N x, Expression<? extends N> y) {
311 return criteriaBuilder.sum(x, y);
314 public <N extends Number> Expression<N> prod(Expression<? extends N> x, Expression<? extends N> y) {
315 return criteriaBuilder.prod(x, y);
318 public <N extends Number> Expression<N> prod(Expression<? extends N> x, N y) {
319 return criteriaBuilder.prod(x, y);
322 public <N extends Number> Expression<N> prod(N x, Expression<? extends N> y) {
323 return criteriaBuilder.prod(x, y);
326 public <N extends Number> Expression<N> diff(Expression<? extends N> x, Expression<? extends N> y) {
327 return criteriaBuilder.diff(x, y);
330 public <N extends Number> Expression<N> diff(Expression<? extends N> x, N y) {
331 return criteriaBuilder.diff(x, y);
334 public <N extends Number> Expression<N> diff(N x, Expression<? extends N> y) {
335 return criteriaBuilder.diff(x, y);
338 public Expression<Number>
quot(Expression<? extends Number> x, Expression<? extends Number> y) {
339 return criteriaBuilder.quot(x, y);
342 public Expression<Number>
quot(Expression<? extends Number> x, Number y) {
343 return criteriaBuilder.quot(x, y);
346 public Expression<Number>
quot(Number x, Expression<? extends Number> y) {
347 return criteriaBuilder.quot(x, y);
350 public Expression<Integer>
mod(Expression<Integer> x, Expression<Integer> y) {
351 return criteriaBuilder.mod(x, y);
354 public Expression<Integer>
mod(Expression<Integer> x, Integer y) {
355 return criteriaBuilder.mod(x, y);
358 public Expression<Integer>
mod(Integer x, Expression<Integer> y) {
359 return criteriaBuilder.mod(x, y);
362 public Expression<Double>
sqrt(Expression<? extends Number> x) {
363 return criteriaBuilder.sqrt(x);
366 public Expression<Long>
toLong(Expression<? extends Number> number) {
367 return criteriaBuilder.toLong(number);
370 public Expression<Integer>
toInteger(Expression<? extends Number> number) {
371 return criteriaBuilder.toInteger(number);
374 public Expression<Float>
toFloat(Expression<? extends Number> number) {
375 return criteriaBuilder.toFloat(number);
378 public Expression<Double>
toDouble(Expression<? extends Number> number) {
379 return criteriaBuilder.toDouble(number);
382 public Expression<BigDecimal>
toBigDecimal(Expression<? extends Number> number) {
383 return criteriaBuilder.toBigDecimal(number);
386 public Expression<BigInteger>
toBigInteger(Expression<? extends Number> number) {
387 return criteriaBuilder.toBigInteger(number);
390 public Expression<String>
toString(Expression<Character> character) {
391 return criteriaBuilder.toString(character);
394 public <T> Expression<T> literal(T value) {
395 return criteriaBuilder.literal(value);
398 public <T> Expression<T> nullLiteral(Class<T> resultClass) {
399 return criteriaBuilder.nullLiteral(resultClass);
402 public <T> ParameterExpression<T> parameter(Class<T> paramClass) {
403 return criteriaBuilder.parameter(paramClass);
406 public <T> ParameterExpression<T> parameter(Class<T> paramClass, String name) {
407 return criteriaBuilder.parameter(paramClass, name);
410 public <C extends Collection<?>> Predicate isEmpty(Expression<C> collection) {
411 return criteriaBuilder.isEmpty(collection);
414 public <C extends Collection<?>> Predicate isNotEmpty(Expression<C> collection) {
415 return criteriaBuilder.isNotEmpty(collection);
418 public <C extends Collection<?>> Expression<Integer> size(Expression<C> collection) {
419 return criteriaBuilder.size(collection);
422 public <C extends Collection<?>> Expression<Integer> size(C collection) {
423 return criteriaBuilder.size(collection);
426 public <E, C extends Collection<E>> Predicate isMember(Expression<E> elem, Expression<C> collection) {
427 return criteriaBuilder.isMember(elem, collection);
430 public <E, C extends Collection<E>> Predicate isMember(E elem, Expression<C> collection) {
431 return criteriaBuilder.isMember(elem, collection);
434 public <E, C extends Collection<E>> Predicate isNotMember(Expression<E> elem, Expression<C> collection) {
435 return criteriaBuilder.isNotMember(elem, collection);
438 public <E, C extends Collection<E>> Predicate isNotMember(E elem, Expression<C> collection) {
439 return criteriaBuilder.isNotMember(elem, collection);
442 public <V, M extends Map<?, V>> Expression<Collection<V>> values(M map) {
443 return criteriaBuilder.values(map);
446 public <K, M extends Map<K, ?>> Expression<Set<K>> keys(M map) {
447 return criteriaBuilder.keys(map);
450 public Predicate
like(Expression<String> x, Expression<String> pattern) {
451 return criteriaBuilder.like(x, pattern);
454 public Predicate
like(Expression<String> x, String pattern) {
455 return criteriaBuilder.like(x, pattern);
458 public Predicate
like(Expression<String> x, Expression<String> pattern, Expression<Character> escapeChar) {
459 return criteriaBuilder.like(x, pattern, escapeChar);
462 public Predicate
like(Expression<String> x, Expression<String> pattern,
char escapeChar) {
463 return criteriaBuilder.like(x, pattern, escapeChar);
466 public Predicate
like(Expression<String> x, String pattern, Expression<Character> escapeChar) {
467 return criteriaBuilder.like(x, pattern, escapeChar);
470 public Predicate
like(Expression<String> x, String pattern,
char escapeChar) {
471 return criteriaBuilder.like(x, pattern, escapeChar);
474 public Predicate
notLike(Expression<String> x, Expression<String> pattern) {
475 return criteriaBuilder.notLike(x, pattern);
478 public Predicate
notLike(Expression<String> x, String pattern) {
479 return criteriaBuilder.notLike(x, pattern);
482 public Predicate
notLike(Expression<String> x, Expression<String> pattern, Expression<Character> escapeChar) {
483 return criteriaBuilder.notLike(x, pattern, escapeChar);
486 public Predicate
notLike(Expression<String> x, Expression<String> pattern,
char escapeChar) {
487 return criteriaBuilder.notLike(x, pattern, escapeChar);
490 public Predicate
notLike(Expression<String> x, String pattern, Expression<Character> escapeChar) {
491 return criteriaBuilder.notLike(x, pattern, escapeChar);
494 public Predicate
notLike(Expression<String> x, String pattern,
char escapeChar) {
495 return criteriaBuilder.notLike(x, pattern, escapeChar);
498 public Expression<String>
concat(Expression<String> x, Expression<String> y) {
499 return criteriaBuilder.concat(x, y);
502 public Expression<String>
concat(Expression<String> x, String y) {
503 return criteriaBuilder.concat(x, y);
506 public Expression<String>
concat(String x, Expression<String> y) {
507 return criteriaBuilder.concat(x, y);
510 public Expression<String>
substring(Expression<String> x, Expression<Integer> from) {
511 return criteriaBuilder.substring(x, from);
514 public Expression<String>
substring(Expression<String> x,
int from) {
515 return criteriaBuilder.substring(x, from);
518 public Expression<String>
substring(Expression<String> x, Expression<Integer> from, Expression<Integer> len) {
519 return criteriaBuilder.substring(x, from, len);
522 public Expression<String>
substring(Expression<String> x,
int from,
int len) {
523 return criteriaBuilder.substring(x, from, len);
526 public Expression<String>
trim(Expression<String> x) {
527 return criteriaBuilder.trim(x);
530 public Expression<String>
trim(CriteriaBuilder.Trimspec ts, Expression<String> x) {
531 return criteriaBuilder.trim(ts, x);
534 public Expression<String>
trim(Expression<Character> t, Expression<String> x) {
535 return criteriaBuilder.trim(t, x);
538 public Expression<String>
trim(CriteriaBuilder.Trimspec ts, Expression<Character> t, Expression<String> x) {
539 return criteriaBuilder.trim(ts, t, x);
542 public Expression<String>
trim(
char t, Expression<String> x) {
543 return criteriaBuilder.trim(t, x);
546 public Expression<String>
trim(CriteriaBuilder.Trimspec ts,
char t, Expression<String> x) {
547 return criteriaBuilder.trim(ts, t, x);
550 public Expression<String>
lower(Expression<String> x) {
551 return criteriaBuilder.lower(x);
554 public Expression<String>
upper(Expression<String> x) {
555 return criteriaBuilder.upper(x);
558 public Expression<Integer>
length(Expression<String> x) {
559 return criteriaBuilder.length(x);
562 public Expression<Integer>
locate(Expression<String> x, Expression<String> pattern) {
563 return criteriaBuilder.locate(x, pattern);
566 public Expression<Integer>
locate(Expression<String> x, String pattern) {
567 return criteriaBuilder.locate(x, pattern);
570 public Expression<Integer>
locate(Expression<String> x, Expression<String> pattern, Expression<Integer> from) {
571 return criteriaBuilder.locate(x, pattern, from);
574 public Expression<Integer>
locate(Expression<String> x, String pattern,
int from) {
575 return criteriaBuilder.locate(x, pattern, from);
579 return criteriaBuilder.currentDate();
583 return criteriaBuilder.currentTimestamp();
587 return criteriaBuilder.currentTime();
590 public <T> CriteriaBuilder.In<T> in(Expression<? extends T> expression) {
591 return criteriaBuilder.in(expression);
594 public <Y> Expression<Y> coalesce(Expression<? extends Y> x, Expression<? extends Y> y) {
595 return criteriaBuilder.coalesce(x, y);
598 public <Y> Expression<Y> coalesce(Expression<? extends Y> x, Y y) {
599 return criteriaBuilder.coalesce(x, y);
602 public <Y> Expression<Y> nullif(Expression<Y> x, Expression<?> y) {
603 return criteriaBuilder.nullif(x, y);
606 public <Y> Expression<Y> nullif(Expression<Y> x, Y y) {
607 return criteriaBuilder.nullif(x, y);
610 public <T> CriteriaBuilder.Coalesce<T> coalesce() {
611 return criteriaBuilder.coalesce();
614 public <C, R> CriteriaBuilder.SimpleCase<C, R> selectCase(Expression<? extends C> expression) {
615 return criteriaBuilder.selectCase(expression);
618 public <R> CriteriaBuilder.Case<R> selectCase() {
619 return criteriaBuilder.selectCase();
622 public <T> Expression<T>
function(String name, Class<T> type, Expression<?>... args) {
623 return criteriaBuilder.function(name, type, args);
626 public <X, T, V extends T> Join<X, V> treat(Join<X, T> join, Class<V> type) {
627 return criteriaBuilder.treat(join, type);
630 public <X, T, E extends T> CollectionJoin<X, E> treat(CollectionJoin<X, T> join, Class<E> type) {
631 return criteriaBuilder.treat(join, type);
634 public <X, T, E extends T> SetJoin<X, E> treat(SetJoin<X, T> join, Class<E> type) {
635 return criteriaBuilder.treat(join, type);
638 public <X, T, E extends T> ListJoin<X, E> treat(ListJoin<X, T> join, Class<E> type) {
639 return criteriaBuilder.treat(join, type);
642 public <X, K, T, V extends T> MapJoin<X, K, V> treat(MapJoin<X, K, T> join, Class<V> type) {
643 return criteriaBuilder.treat(join, type);
646 public <X, T extends X> Path<T> treat(Path<X> path, Class<T> type) {
647 return criteriaBuilder.treat(path, type);
650 public <X, T extends X> Root<T> treat(Root<X> root, Class<T> type) {
651 return criteriaBuilder.treat(root, type);
Expression< String > concat(Expression< String > x, Expression< String > y)
Expression< Number > quot(Expression<? extends Number > x, Number y)
CriteriaBuilder builder()
CompoundSelection< Object[]> array(Selection<?>... selections)
Expression< String > upper(Expression< String > x)
Predicate lt(Expression<? extends Number > x, Number y)
Predicate like(Expression< String > x, Expression< String > pattern, Expression< Character > escapeChar)
Expression< Long > toLong(Expression<? extends Number > number)
Expression< String > concat(String x, Expression< String > y)
Expression< Double > toDouble(Expression<? extends Number > number)
Expression< String > trim(CriteriaBuilder.Trimspec ts, char t, Expression< String > x)
Predicate isNull(Expression<?> x)
Predicate notLike(Expression< String > x, Expression< String > pattern)
Expression< Integer > locate(Expression< String > x, String pattern)
Predicate ge(Expression<? extends Number > x, Number y)
Expression< Number > quot(Number x, Expression<? extends Number > y)
Expression< String > concat(Expression< String > x, String y)
Expression< String > trim(CriteriaBuilder.Trimspec ts, Expression< Character > t, Expression< String > x)
Expression< Timestamp > currentTimestamp()
Predicate isTrue(Expression< Boolean > x)
Predicate like(Expression< String > x, Expression< String > pattern, char escapeChar)
Predicate or(Predicate... restrictions)
Expression< String > trim(Expression< String > x)
Order asc(Expression<?> x)
Expression< String > trim(CriteriaBuilder.Trimspec ts, Expression< String > x)
CompoundSelection< Tuple > tuple(Selection<?>... selections)
Expression< Time > currentTime()
Expression< String > substring(Expression< String > x, Expression< Integer > from)
Predicate gt(Expression<? extends Number > x, Number y)
Expression< String > toString(Expression< Character > character)
Predicate not(Expression< Boolean > restriction)
Predicate like(Expression< String > x, String pattern, char escapeChar)
Expression< Integer > mod(Expression< Integer > x, Integer y)
Predicate like(Expression< String > x, String pattern)
Predicate and(Predicate... restrictions)
Predicate or(Expression< Boolean > x, Expression< Boolean > y)
Predicate lt(Expression<? extends Number > x, Expression<? extends Number > y)
Predicate isFalse(Expression< Boolean > x)
Predicate and(Expression< Boolean > x, Expression< Boolean > y)
Predicate isNotNull(Expression<?> x)
Expression< Float > toFloat(Expression<? extends Number > number)
Order desc(Expression<?> x)
Expression< String > substring(Expression< String > x, int from, int len)
Expression< String > trim(Expression< Character > t, Expression< String > x)
Expression< BigInteger > toBigInteger(Expression<? extends Number > number)
Predicate equal(Expression<?> x, Object y)
Expression< Integer > length(Expression< String > x)
Expression< Long > sumAsLong(Expression< Integer > x)
Expression< Integer > locate(Expression< String > x, Expression< String > pattern)
Expression< Integer > toInteger(Expression<? extends Number > number)
Predicate notLike(Expression< String > x, Expression< String > pattern, Expression< Character > escapeChar)
Predicate notLike(Expression< String > x, String pattern, char escapeChar)
Predicate like(Expression< String > x, String pattern, Expression< Character > escapeChar)
Expression< Integer > mod(Expression< Integer > x, Expression< Integer > y)
Predicate notEqual(Expression<?> x, Expression<?> y)
Predicate le(Expression<? extends Number > x, Number y)
Expression< BigDecimal > toBigDecimal(Expression<? extends Number > number)
Expression< Integer > locate(Expression< String > x, String pattern, int from)
Expression< Long > count(Expression<?> x)
Predicate notLike(Expression< String > x, String pattern, Expression< Character > escapeChar)
Predicate notLike(Expression< String > x, Expression< String > pattern, char escapeChar)
Expression< Number > quot(Expression<? extends Number > x, Expression<? extends Number > y)
Predicate notEqual(Expression<?> x, Object y)
Expression< String > substring(Expression< String > x, int from)
Expression< String > lower(Expression< String > x)
Expression< String > substring(Expression< String > x, Expression< Integer > from, Expression< Integer > len)
Predicate like(Expression< String > x, Expression< String > pattern)
Expression< Long > countDistinct(Expression<?> x)
Expression< Integer > locate(Expression< String > x, Expression< String > pattern, Expression< Integer > from)
Predicate exists(Subquery<?> subquery)
Predicate gt(Expression<? extends Number > x, Expression<? extends Number > y)
Predicate notLike(Expression< String > x, String pattern)
Expression< String > trim(char t, Expression< String > x)
Expression< Date > currentDate()
Expression< Double > sumAsDouble(Expression< Float > x)
Expression< Integer > mod(Integer x, Expression< Integer > y)
Predicate ge(Expression<? extends Number > x, Expression<? extends Number > y)
Expression< Double > sqrt(Expression<? extends Number > x)
Predicate le(Expression<? extends Number > x, Expression<? extends Number > y)
Predicate equal(Expression<?> x, Expression<?> y)