@Transactional // May be called by reapers running in pools, etc.
    public void deleteUnattachedByAge(@NotNull OffsetDateTime timeThreshold) {
        Objects.requireNonNull(timeThreshold, "time threshold must be non-null");
        getActiveEntityManager()
                .createQuery("DELETE FROM BlobEntity b "
                                     + "WHERE b.createdOn < :timeThreshold "
                                     + "AND b.refCount <= 0")
                .setParameter("timeThreshold", timeThreshold)
                .executeUpdate();
    }
Delete by provided ID (nb: not name, its ID set when stored).

<p>Does not truly delete the file if there are other (i.e. deduplicated) references to this blob. In this case
the reference counter is decremented.
manager/api/jpa/src/main/java/io/apiman/manager/api/jpa/blobstore/BlobStoreRepository.java