Predicate subPredicate1 = criteriaBuilder.le(maxTime.get("timestamp"), timestamp);
Predicate subPredicate2 = criteriaBuilder.equal(maxTime.get("oid"), from.get("oid"));
subquery.where(criteriaBuilder.and(subPredicate1, subPredicate2));
Predicate predicate1 = criteriaBuilder.equal(from.get("timestamp"), subquery);
Predicate predicate2 = criteriaBuilder.notEqual(from.get("isDeleted"), Boolean.TRUE);
query.where(criteriaBuilder.and(predicate1, predicate2));
TypedQuery<JPAObject> typedQuery = entityManager.createQuery(query);
List<JPAObject> resultList = typedQuery.getResultList();