/** * Create a new Boolean operation * * @param operator operator * @param args operation arguments * @return operation expression */ public static BooleanOperation booleanOperation(Operator operator, Expression<?>... args) { return predicate(operator, args); }
@Override public BooleanExpression eq(Expression<? extends T> expr) { return Expressions.predicate(Ops.EQ, this, expr); }
@Override public BooleanExpression contains(Expression<? extends T> right) { return Expressions.predicate(Ops.IN, right, this); }
@Override public BooleanExpression lt(Expression<? extends T> expr) { return Expressions.predicate(Ops.LT, this, expr); }
@Override public BooleanExpression loe(Expression<? extends T> expr) { return Expressions.predicate(Ops.LOE, this, expr); }
@Override public BooleanExpression goe(Expression<? extends T> expr) { return Expressions.predicate(Ops.GOE, this, expr); }
@Override public BooleanExpression ne(Expression<? extends T> expr) { return Expressions.predicate(Ops.NE, this, expr); }
@Override public BooleanExpression gt(Expression<? extends T> expr) { return Expressions.predicate(Ops.GT, this, expr); }
@Override public BooleanExpression exists() { QueryMetadata metadata = getMetadata(); if (metadata.getProjection() == null) { queryMixin.setProjection(Expressions.ONE); } return Expressions.predicate(Ops.EXISTS, this); }
@Test public void predicate() { assertEquals("a && b", Expressions.predicate(Ops.AND, a, b).toString()); }
/** * Create a new Boolean operation * * @param operator operator * @param args operation arguments * @return operation expression */ public static BooleanOperation booleanOperation(Operator operator, Expression<?>... args) { return predicate(operator, args); }
@Override public BooleanExpression contains(Expression<? extends T> right) { return Expressions.predicate(Ops.IN, right, this); }
@Override public BooleanExpression eq(Expression<? extends T> expr) { return Expressions.predicate(Ops.EQ, this, expr); }
@Override public BooleanExpression loe(Expression<? extends T> expr) { return Expressions.predicate(Ops.LOE, this, expr); }
@Override public BooleanExpression exists() { QueryMetadata metadata = getMetadata(); if (metadata.getProjection() == null) { queryMixin.setProjection(Expressions.ONE); } return Expressions.predicate(Ops.EXISTS, this); }
@Override public BooleanExpression exists() { QueryMetadata metadata = getMetadata(); if (metadata.getProjection() == null) { queryMixin.setProjection(Expressions.ONE); } return Expressions.predicate(Ops.EXISTS, this); }
@Override protected List<ObjectVersion<M>> doFetchUpdates(Id docId, Revision since) { List<Group> versionsAndParents = versionsAndParentsSince(docId, since); if (versionsAndParents.isEmpty()) { return ImmutableList.of(); } Long sinceOrdinal = versionsAndParents.get(0).getOne(options.sinceVersion.ordinal); BooleanExpression predicate = versionsOf(docId) .and(predicate(GT, options.version.ordinal, constant(sinceOrdinal))); FetchResults<Id, M> results = fetch(versionsAndParents, false, predicate); return results.containsKey(docId) ? results.getVersions(docId) : ImmutableList.of(); }
@Override protected List<ObjectVersion<M>> doFetchUpdates(Id docId, Revision since) { List<Group> versionsAndParents = versionsAndParentsSince(docId, since); if (versionsAndParents.isEmpty()) { return ImmutableList.of(); } Long sinceOrdinal = versionsAndParents.get(0).getOne(options.sinceVersion.localOrdinal); BooleanExpression predicate = versionsOf(docId) .and(predicate(GT, options.version.localOrdinal, constant(sinceOrdinal))); FetchResults<Id, M> results = fetch(versionsAndParents, false, predicate); return results.containsKey(docId) ? results.getVersions(docId) : ImmutableList.of(); }
protected Map<Id, Long> lockEntitiesForUpdate(EntityStoreOptions<Id, M, V> options, Collection<Id> docIds) { return options.queryFactory .from(options.entity) .where(predicate(IN, options.entity.id, constant(docIds))) .orderBy(new OrderSpecifier<>(Order.ASC, options.entity.id)) .forUpdate() .transform(groupBy(options.entity.id).as(maxLocalOrdinalByEntity(options))); }
@Test @ExcludeIn(FIREBIRD) public void like_escape() { List<String> strs = ImmutableList.of("%a", "a%", "%a%", "_a", "a_", "_a_", "[C-P]arsen", "a\nb"); for (String str : strs) { assertTrue(str, query() .from(employee) .where(Expressions.predicate(Ops.STRING_CONTAINS, Expressions.constant(str), Expressions.constant(str))).fetchCount() > 0); } }