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

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

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

Query.scroll介绍

[英]Return the query results as ScrollableResults. The scrollability of the returned results depends upon JDBC driver support for scrollable ResultSets.
[中]将查询结果作为可滚动结果返回。返回结果的可滚动性取决于JDBC驱动程序对可滚动结果集的支持。

代码示例

代码示例来源:origin: spring-projects/spring-data-jpa

  1. /**
  2. * Creates a new {@link HibernateScrollableResultsIterator} for the given {@link Query}.
  3. *
  4. * @param jpaQuery must not be {@literal null}.
  5. */
  6. HibernateScrollableResultsIterator(Query jpaQuery) {
  7. org.hibernate.query.Query<?> query = jpaQuery.unwrap(org.hibernate.query.Query.class);
  8. this.scrollableResults = query.setReadOnly(TransactionSynchronizationManager.isCurrentTransactionReadOnly())//
  9. .scroll(ScrollMode.FORWARD_ONLY);
  10. }

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

  1. @Test
  2. public void testIncompleteScrollFirstResultInTransaction() {
  3. Session s = openSession();
  4. Transaction tx = s.beginTransaction();
  5. ScrollableResults results = s.createQuery( QUERY + " order by p.name asc" ).scroll();
  6. results.next();
  7. Parent p = (Parent) results.get( 0 );
  8. assertResultFromOneUser( p );
  9. tx.commit();
  10. s.close();
  11. }

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

  1. @Test
  2. public void testScroll() {
  3. Session s = openSession();
  4. s.beginTransaction();
  5. ScrollableResults results = s.createQuery( QUERY + " order by p.name asc, c.name asc" ).scroll();
  6. List list = new ArrayList();
  7. while ( results.next() ) {
  8. list.add( results.get( 0 ) );
  9. }
  10. assertResultFromAllUsers( list );
  11. s.getTransaction().commit();
  12. s.close();
  13. }

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

  1. @Test
  2. public void testIncompleteScrollFirstResult() {
  3. Session s = openSession();
  4. s.beginTransaction();
  5. ScrollableResults results = s.createQuery( QUERY + " order by p.name asc" ).scroll();
  6. results.next();
  7. Parent p = (Parent) results.get( 0 );
  8. assertResultFromOneUser( p );
  9. s.getTransaction().commit();
  10. s.close();
  11. }

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

  1. @Test
  2. @TestForIssue( jiraKey = "HHH-1283" )
  3. public void testScrollOrderParentAscChildrenDesc() {
  4. Session s = openSession();
  5. s.beginTransaction();
  6. ScrollableResults results = s.createQuery( QUERY + " order by p.name asc, c.name desc" ).scroll();
  7. List list = new ArrayList();
  8. while ( results.next() ) {
  9. list.add( results.get( 0 ) );
  10. }
  11. assertResultFromAllUsers( list );
  12. s.getTransaction().commit();
  13. s.close();
  14. }

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

  1. @Test
  2. @TestForIssue( jiraKey = "HHH-1283" )
  3. public void testScrollOrderParentAsc() {
  4. Session s = openSession();
  5. s.beginTransaction();
  6. ScrollableResults results = s.createQuery( QUERY + " order by p.name asc" ).scroll();
  7. List list = new ArrayList();
  8. while ( results.next() ) {
  9. list.add( results.get( 0 ) );
  10. }
  11. assertResultFromAllUsers( list );
  12. s.getTransaction().commit();
  13. s.close();
  14. }

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

  1. @Test
  2. @TestForIssue( jiraKey = "HHH-1283" )
  3. public void testScrollOrderParentDesc() {
  4. Session s = openSession();
  5. s.beginTransaction();
  6. ScrollableResults results = s.createQuery( QUERY + " order by p.name desc" ).scroll();
  7. List list = new ArrayList();
  8. while ( results.next() ) {
  9. list.add( results.get( 0 ) );
  10. }
  11. assertResultFromAllUsers( list );
  12. s.getTransaction().commit();
  13. s.close();
  14. }

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

  1. @Test
  2. @TestForIssue( jiraKey = "HHH-1283" )
  3. public void testScrollOrderParentAscChildrenAsc() {
  4. Session s = openSession();
  5. s.beginTransaction();
  6. ScrollableResults results = s.createQuery( QUERY + " order by p.name asc, c.name asc" ).scroll();
  7. List list = new ArrayList();
  8. while ( results.next() ) {
  9. list.add( results.get( 0 ) );
  10. }
  11. assertResultFromAllUsers( list );
  12. s.getTransaction().commit();
  13. s.close();
  14. }

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

  1. @Test
  2. public void testTupleReturnFails() {
  3. Session s = openSession();
  4. Transaction txn = s.beginTransaction();
  5. try {
  6. s.createQuery( "select a, a.weight from Animal a inner join fetch a.offspring" ).scroll();
  7. fail( "scroll allowed with collection fetch and reurning tuples" );
  8. }
  9. catch (IllegalArgumentException e) {
  10. assertTyping( QueryException.class, e.getCause() );
  11. }
  12. catch( HibernateException e ) {
  13. // expected result...
  14. }
  15. txn.commit();
  16. s.close();
  17. }

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

  1. @Test
  2. public void testSetParameters() {
  3. final List params = new ArrayList();
  4. params.add( new BigInteger( "2" ) );
  5. params.add( new BigInteger( "3" ) );
  6. try (Session s = openSession()) {
  7. final Query query = s.createNativeQuery( "select e.big from MY_ENTITY e where e.big in (:bigValues)" )
  8. .setParameter( "bigValues", params );
  9. try (ScrollableResults scroll = query.scroll()) {
  10. while ( scroll.next() ) {
  11. assertThat( scroll.get()[0], not( nullValue()) );
  12. }
  13. }
  14. }
  15. }

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

  1. @Test
  2. @TestForIssue( jiraKey = "HHH-1283" )
  3. public void testIncompleteScrollSecondResultInTransaction() {
  4. Session s = openSession();
  5. Transaction tx = s.beginTransaction();
  6. ScrollableResults results = s.createQuery( QUERY + " order by p.name asc" ).scroll();
  7. results.next();
  8. Parent p = (Parent) results.get( 0 );
  9. assertResultFromOneUser( p );
  10. results.next();
  11. p = (Parent) results.get( 0 );
  12. assertResultFromOneUser( p );
  13. tx.commit();
  14. s.close();
  15. }

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

  1. @Test
  2. @TestForIssue( jiraKey = "HHH-1283" )
  3. public void testIncompleteScrollSecondResult() {
  4. Session s = openSession();
  5. s.beginTransaction();
  6. ScrollableResults results = s.createQuery( QUERY + " order by p.name asc" ).scroll();
  7. results.next();
  8. Parent p = (Parent) results.get( 0 );
  9. assertResultFromOneUser( p );
  10. results.next();
  11. p = (Parent) results.get( 0 );
  12. assertResultFromOneUser( p );
  13. s.getTransaction().commit();
  14. s.close();
  15. }

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

  1. @Test
  2. @SkipForDialect(value = AbstractHANADialect.class, comment = "HANA only supports forward-only cursors")
  3. public void testScrollMethod() {
  4. final String entityName = "expected";
  5. insertTestEntity( entityName );
  6. try (Session session = openSession()) {
  7. final CriteriaQuery<TestEntity> query = createTestEntityCriteriaQuery(
  8. entityName,
  9. session
  10. );
  11. try (final ScrollableResults scroll = session.createQuery( query ).scroll()) {
  12. assertThat( scroll.first(), is( true ) );
  13. }
  14. }
  15. }

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

  1. @Test
  2. @TestForIssue(jiraKey = "HHH-10860")
  3. public void testScrollableResults() {
  4. final List params = new ArrayList();
  5. params.add( 1L );
  6. params.add( 2L );
  7. try (Session s = openSession()) {
  8. final Query query = s.createQuery( "from MyEntity e where e.id in (:ids)" )
  9. .setParameter( "ids", params )
  10. .setFetchSize( 10 );
  11. try (ScrollableResults scroll = query.scroll( ScrollMode.FORWARD_ONLY )) {
  12. int i = 0;
  13. while ( scroll.next() ) {
  14. if ( i == 0 ) {
  15. assertThat( ((MyEntity) scroll.get()[0]).getDescription(), is( "entity_1" ) );
  16. }
  17. else {
  18. assertThat( ((MyEntity) scroll.get()[0]).getDescription(), is( "entity_2" ) );
  19. }
  20. i++;
  21. }
  22. }
  23. }
  24. }

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

  1. @Test
  2. @RequiresDialectFeature(
  3. value = DialectChecks.SupportsResultSetPositioningOnForwardOnlyCursorCheck.class,
  4. comment = "Driver does not support result set positioning methods on forward-only cursors"
  5. )
  6. public void testScrollingJoinFetchesForward() {
  7. TestData data = new TestData();
  8. data.prepare();
  9. Session s = openSession();
  10. Transaction txn = s.beginTransaction();
  11. ScrollableResults results = s
  12. .createQuery( "from Animal a left join fetch a.offspring where a.description like :desc order by a.id" )
  13. .setString( "desc", "root%" )
  14. .scroll( ScrollMode.FORWARD_ONLY );
  15. int counter = 0;
  16. while ( results.next() ) {
  17. counter++;
  18. Animal animal = ( Animal ) results.get( 0 );
  19. checkResult( animal );
  20. }
  21. assertEquals( "unexpected result count", 2, counter );
  22. txn.commit();
  23. s.close();
  24. data.cleanup();
  25. }

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

  1. @Test
  2. public void test_hql_api_scroll_open_example() {
  3. ScrollableResults scrollableResults = doInJPA( this::entityManagerFactory, entityManager -> {
  4. Session session = entityManager.unwrap( Session.class );
  5. return session.createQuery(
  6. "select p " +
  7. "from Person p " +
  8. "where p.name like :name" )
  9. .setParameter( "name", "J%" )
  10. .scroll();
  11. });
  12. try {
  13. scrollableResults.next();
  14. fail("Should throw exception because the ResultSet must be closed by now!");
  15. }
  16. catch ( Exception expected ) {
  17. }
  18. }

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

  1. @Test
  2. @TestForIssue(jiraKey = "HHH-10860")
  3. public void testScrollableResults2() {
  4. final List params = new ArrayList();
  5. params.add( 1L );
  6. params.add( 2L );
  7. try (Session s = openSession()) {
  8. final Query query = s.createQuery( "from MyEntity e where e.id in (:ids)" )
  9. .setParameter( "ids", params )
  10. .setFetchSize( 10 );
  11. try (ScrollableResults scroll = query.scroll( )) {
  12. int i = 0;
  13. while ( scroll.next() ) {
  14. if ( i == 0 ) {
  15. assertThat( ((MyEntity) scroll.get()[0]).getDescription(), is( "entity_1" ) );
  16. }
  17. else {
  18. assertThat( ((MyEntity) scroll.get()[0]).getDescription(), is( "entity_2" ) );
  19. }
  20. i++;
  21. }
  22. }
  23. }
  24. }

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

  1. @Test
  2. @SkipForDialect(value = CUBRIDDialect.class, comment = "As of verion 8.4.1 CUBRID doesn't support temporary tables. This test fails with"
  3. + "HibernateException: cannot doAfterTransactionCompletion multi-table deletes using dialect not supporting temp tables")
  4. @SkipForDialect(value = AbstractHANADialect.class, comment = "HANA only supports forward-only cursors.")
  5. public void testScrollingJoinFetchesReverse() {
  6. TestData data = new TestData();
  7. data.prepare();
  8. Session s = openSession();
  9. Transaction txn = s.beginTransaction();
  10. ScrollableResults results = s
  11. .createQuery(
  12. "from Animal a left join fetch a.offspring where a.description like :desc order by a.id" )
  13. .setString( "desc", "root%" ).scroll();
  14. results.afterLast();
  15. int counter = 0;
  16. while ( results.previous() ) {
  17. counter++;
  18. Animal animal = ( Animal ) results.get( 0 );
  19. checkResult( animal );
  20. }
  21. assertEquals( "unexpected result count", 2, counter );
  22. txn.commit();
  23. s.close();
  24. data.cleanup();
  25. }

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

  1. @Test
  2. public void test_hql_api_scroll_projection_example() {
  3. doInJPA( this::entityManagerFactory, entityManager -> {
  4. Session session = entityManager.unwrap( Session.class );
  5. //tag::hql-api-scroll-example[]
  6. try ( ScrollableResults scrollableResults = session.createQuery(
  7. "select p " +
  8. "from Person p " +
  9. "where p.name like :name" )
  10. .setParameter( "name", "J%" )
  11. .scroll()
  12. ) {
  13. while(scrollableResults.next()) {
  14. Person person = (Person) scrollableResults.get()[0];
  15. process(person);
  16. }
  17. }
  18. //end::hql-api-scroll-example[]
  19. });
  20. }

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

  1. @Test
  2. public void testAssertSubclassInsertedSuccessfullyAfterFlush() {
  3. doInHibernate( this::sessionFactory, s -> {
  4. Employee e = new Employee();
  5. e.setName( "Mark" );
  6. e.setTitle( "internal sales" );
  7. e.setSex( 'M' );
  8. e.setAddress( "buckhead" );
  9. e.setZip( "30305" );
  10. e.setCountry( "USA" );
  11. s.save( e );
  12. s.flush();
  13. long numberOfInsertedEmployee = (long) s.createQuery( "select count(e) from Employee e" ).uniqueResult();
  14. Assert.assertEquals( 1L, numberOfInsertedEmployee );
  15. } );
  16. doInHibernate( this::sessionFactory, s -> {
  17. int i = 0;
  18. ScrollableResults sr = s.createQuery(
  19. "select e from Employee e" )
  20. .scroll( ScrollMode.FORWARD_ONLY );
  21. while ( sr.next() ) {
  22. Employee e = (Employee) sr.get( 0 );
  23. s.delete( e );
  24. }
  25. } );
  26. }

相关文章