Support Stream as query result Hibernate has already added a lot of alignments with Java 8 , Stream and Optional are supported. JPA 2.2 add official support for Stream result of query. The following codes demonstrates query posts by keywork in JPA 2.1. public List< Post > findByKeyword( String keyword) { CriteriaBuilder cb = this . entityManager . getCriteriaBuilder(); CriteriaQuery< Post > q = cb . createQuery( Post . class); Root< Post > c = q . from( Post . class); List< Predicate > predicates = new ArrayList<> (); if ( null != keyword && " " . equals(keyword . trim())) { predicates . add( cb . or( cb . like(c . get( Post_ . title), ' % ' + keyword + ' % ' ), cb . like(c . get( Post_ . content), ' % ' + keyword + ' % ' ) ) ); } q . where(predicates . toArray( new Predicate [predicates . size()])); TypedQuery query = this . entityMan...