Predicate subPredicate1 = criteriaBuilder.equal(from.get("oid"), f.get("oid"));
Predicate subPredicate2 = criteriaBuilder.equal(f.get("isDeleted"), Boolean.TRUE);
Predicate subPredicate3 = criteriaBuilder.gt(from.get("timestamp"), f.get("timestamp"));
sub.where(criteriaBuilder.and(subPredicate1, subPredicate2, subPredicate3));
Predicate predicate1 = criteriaBuilder.notEqual(from.get("isDeleted"), Boolean.TRUE);
Predicate predicate2 = criteriaBuilder.exists(sub);
query.where(predicate1, predicate2);
TypedQuery<String> typedQuery = entityManager.createQuery(query);
return typedQuery.getResultList();