org.hibernate.query.Query.stream()方法的使用及代码示例

x33g5p2x  于2022-01-28 转载在 其他  
字(7.4k)|赞(0)|评价(0)|浏览(271)

本文整理了Java中org.hibernate.query.Query.stream方法的一些代码示例,展示了Query.stream的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Query.stream方法的具体详情如下:
包路径:org.hibernate.query.Query
类名称:Query
方法名:stream

Query.stream介绍

[英]Retrieve a Stream over the query results.

In the initial implementation (5.2) this returns a simple sequential Stream. The plan is to return a a smarter stream in 6.x leveraging the SQM model.

You should call java.util.stream.Stream#close() after processing the stream so that the underlying resources are deallocated right away.
[中]通过查询结果检索流。
在最初的实现(5.2)中,它返回一个简单的顺序流。计划是在6小时内返回一个更智能的流。x利用SQM模型。
你应该叫java。util。流动流#close()在处理流后立即释放底层资源。

代码示例

代码示例来源:origin: hibernate/hibernate-orm

  1. /**
  2. * JPA 2.2 defines the {@code getResultStream} method so to get a {@link Stream} from the JDBC {@link java.sql.ResultSet}.
  3. *
  4. * Hibernate 5.2 already defines the {@link Query#stream()} method, so {@code getResultStream} can delegate to it.
  5. *
  6. * @return The results Stream
  7. * @since 5.2.11
  8. */
  9. default Stream<R> getResultStream() {
  10. return stream();
  11. }
  12. }

代码示例来源:origin: hibernate/hibernate-orm

  1. @Test
  2. public void testSetParameter() throws Exception {
  3. try (Session session = openSession()) {
  4. final Query<TestEntity> query = session.createQuery(
  5. "SELECT e FROM TestEntity e WHERE e.date <= :ts",
  6. TestEntity.class
  7. ).setParameter( "ts", new DateAttribute( System.currentTimeMillis() ), TemporalType.TIMESTAMP );
  8. final Stream<TestEntity> stream = query.stream();
  9. assertThat( stream.count(), is( 1L ) );
  10. }
  11. }

代码示例来源:origin: hibernate/hibernate-orm

  1. @Test
  2. public void testStreamMethod() {
  3. final String entityName = "expected";
  4. insertTestEntity( entityName );
  5. try (Session session = openSession()) {
  6. final CriteriaQuery<TestEntity> query = createTestEntityCriteriaQuery(
  7. entityName,
  8. session
  9. );
  10. final Stream<TestEntity> stream = session.createQuery( query ).stream();
  11. assertThat( stream.count(), is( 1L ) );
  12. }
  13. }

代码示例来源:origin: hibernate/hibernate-orm

  1. Object result = session.createQuery( "From MyEntity" ).stream().findFirst().orElse( null );
  2. assertTyping( MyEntity.class, result );
  3. result = session.createQuery( "From MyEntity", MyEntity.class ).stream().findFirst().orElse( null );
  4. assertTyping( MyEntity.class, result );
  5. session.createQuery( "From MyEntity", MyEntity.class ).stream().forEach( i -> {
  6. assertTyping( MyEntity.class, i );
  7. } );
  8. Stream<Object[]> data = session.createQuery( "SELECT me.id, me.name FROM MyEntity me" ).stream();
  9. data.forEach( i -> {
  10. assertTyping( Integer.class, i[0] );

代码示例来源:origin: hibernate/hibernate-orm

  1. @Test
  2. public void test_hql_api_stream_projection_example() {
  3. doInJPA( this::entityManagerFactory, entityManager -> {
  4. Session session = entityManager.unwrap( Session.class );
  5. //tag::hql-api-stream-projection-example[]
  6. try ( Stream<Object[]> persons = session.createQuery(
  7. "select p.name, p.nickName " +
  8. "from Person p " +
  9. "where p.name like :name" )
  10. .setParameter( "name", "J%" )
  11. .stream() ) {
  12. persons
  13. .map( row -> new PersonNames(
  14. (String) row[0],
  15. (String) row[1] ) )
  16. .forEach( this::process );
  17. }
  18. //end::hql-api-stream-projection-example[]
  19. });
  20. }

代码示例来源:origin: hibernate/hibernate-orm

  1. @Test
  2. public void test_hql_api_stream_example() {
  3. doInJPA( this::entityManagerFactory, entityManager -> {
  4. Session session = entityManager.unwrap( Session.class );
  5. //tag::hql-api-stream-example[]
  6. try( Stream<Person> persons = session.createQuery(
  7. "select p " +
  8. "from Person p " +
  9. "where p.name like :name" )
  10. .setParameter( "name", "J%" )
  11. .stream() ) {
  12. Map<Phone, List<Call>> callRegistry = persons
  13. .flatMap( person -> person.getPhones().stream() )
  14. .flatMap( phone -> phone.getCalls().stream() )
  15. .collect( Collectors.groupingBy( Call::getPhone ) );
  16. process(callRegistry);
  17. }
  18. //end::hql-api-stream-example[]
  19. });
  20. }

代码示例来源:origin: hibernate/hibernate-orm

  1. @Test
  2. @TestForIssue(jiraKey = "HHH-11743")
  3. public void testTupleStream() {
  4. doInHibernate( this::sessionFactory, session -> {
  5. MyEntity entity = new MyEntity();
  6. entity.id = 2;
  7. entity.name = "an entity";
  8. session.persist( entity );
  9. } );
  10. //test tuple stream using criteria
  11. doInHibernate( this::sessionFactory, session -> {
  12. CriteriaBuilder cb = session.getCriteriaBuilder();
  13. CriteriaQuery<Tuple> criteria = cb.createTupleQuery();
  14. Root<MyEntity> me = criteria.from( MyEntity.class );
  15. criteria.multiselect( me.get( "id" ), me.get( "name" ) );
  16. Stream<Tuple> data = session.createQuery( criteria ).stream();
  17. data.forEach( tuple -> assertTyping( Tuple.class, tuple ) );
  18. } );
  19. //test tuple stream using JPQL
  20. doInHibernate( this::sessionFactory, session -> {
  21. Stream<Tuple> data = session.createQuery( "SELECT me.id, me.name FROM MyEntity me", Tuple.class ).stream();
  22. data.forEach( tuple -> assertTyping( Tuple.class, tuple ) );
  23. } );
  24. }

代码示例来源:origin: hibernate/hibernate-orm

  1. @Test
  2. public void basicStreamTest() {
  3. Session session = openSession();
  4. session.getTransaction().begin();
  5. // mainly we want to make sure that closing the Stream releases the ScrollableResults too
  6. assertThat( ( (SessionImplementor) session ).getJdbcCoordinator().getLogicalConnection().getResourceRegistry().hasRegisteredResources(), is( false ) );
  7. final Stream<MyEntity> stream = session.createQuery( "from MyEntity", MyEntity.class ).stream();
  8. assertThat( ( (SessionImplementor) session ).getJdbcCoordinator().getLogicalConnection().getResourceRegistry().hasRegisteredResources(), is( true ) );
  9. stream.forEach( System.out::println );
  10. assertThat( ( (SessionImplementor) session ).getJdbcCoordinator().getLogicalConnection().getResourceRegistry().hasRegisteredResources(), is( true ) );
  11. stream.close();
  12. assertThat( ( (SessionImplementor) session ).getJdbcCoordinator().getLogicalConnection().getResourceRegistry().hasRegisteredResources(), is( false ) );
  13. session.getTransaction().commit();
  14. session.close();
  15. }

代码示例来源:origin: vladmihalcea/high-performance-java-persistence

  1. private void stream(EntityManager entityManager) {
  2. final AtomicLong sum = new AtomicLong();
  3. try(Stream<Post> postStream = entityManager
  4. .createQuery("select p from Post p", Post.class)
  5. .setMaxResults(resultSetSize)
  6. .unwrap(Query.class)
  7. .stream()) {
  8. postStream.forEach(post -> sum.incrementAndGet());
  9. }
  10. assertEquals(resultSetSize, sum.get());
  11. }

代码示例来源:origin: vladmihalcea/high-performance-java-persistence

  1. private void stream(EntityManager entityManager) {
  2. final AtomicLong sum = new AtomicLong();
  3. try(Stream<Post> postStream = entityManager
  4. .createQuery("select p from Post p", Post.class)
  5. .setMaxResults(resultSetSize)
  6. .setHint(QueryHints.HINT_FETCH_SIZE, Integer.MIN_VALUE)
  7. .unwrap(Query.class)
  8. .stream()) {
  9. postStream.forEach(post -> sum.incrementAndGet());
  10. }
  11. assertEquals(resultSetSize, sum.get());
  12. }

代码示例来源:origin: vladmihalcea/high-performance-java-persistence

  1. @Test
  2. public void testStreamWithoutMaxResult() {
  3. List<Post> posts = doInJPA(entityManager -> {
  4. try(Stream<Post> postStream = entityManager
  5. .createQuery(
  6. "select p " +
  7. "from Post p " +
  8. "order by p.createdOn desc", Post.class)
  9. .unwrap(Query.class)
  10. .stream()
  11. ) {
  12. return postStream.limit( 50 ).collect( Collectors.toList() );
  13. }
  14. });
  15. assertEquals(50, posts.size());
  16. }

代码示例来源:origin: org.nuiton.topia/topia-persistence

  1. Query query = prepareQuery(jpaql, parameters);
  2. Stream result = query.stream();
  3. Consumer<T> consumer = row -> {
  4. List singleton = Collections.singletonList(row);

代码示例来源:origin: vladmihalcea/high-performance-java-persistence

  1. @Test
  2. public void testStream() {
  3. List<Post> posts = doInJPA(entityManager -> {
  4. try(Stream<Post> postStream = entityManager
  5. .createQuery(
  6. "select p " +
  7. "from Post p " +
  8. "order by p.createdOn desc", Post.class)
  9. .setHint(QueryHints.HINT_FETCH_SIZE, 50)
  10. .unwrap(Query.class)
  11. .stream()
  12. ) {
  13. return postStream
  14. .limit(50)
  15. .collect(Collectors.toList());
  16. }
  17. });
  18. assertEquals(50, posts.size());
  19. }

相关文章