Here is a working solution, but I'm not sure if it's ok.
if (criteria.getActive() != null) {
specification = specification.and((root, query, builder) -> {
HibernateCriteriaBuilder hb = (HibernateCriteriaBuilder) builder;
JpaExpression<Duration> oneMinute = hb.durationScaled(root.get(Activity_.duration), Duration.ofMinutes(1));
Expression<ZonedDateTime> result = hb.addDuration(root.get(Activity_.dateStart), oneMinute);
if (criteria.getActive()) {
return builder.greaterThanOrEqualTo(result, ZonedDateTime.now());
}
return builder.lessThan(result, ZonedDateTime.now());
});
}