Search in sources :

Example 16 with ScrollableResults

use of org.hibernate.ScrollableResults in project hibernate-orm by hibernate.

the class HQLScrollFetchTest method testScrollOrderParentAsc.

@Test
@TestForIssue(jiraKey = "HHH-1283")
public void testScrollOrderParentAsc() {
    Session s = openSession();
    s.beginTransaction();
    ScrollableResults results = s.createQuery(QUERY + " order by p.name asc").scroll();
    List list = new ArrayList();
    while (results.next()) {
        list.add(results.get(0));
    }
    assertResultFromAllUsers(list);
    s.getTransaction().commit();
    s.close();
}
Also used : ArrayList(java.util.ArrayList) ArrayList(java.util.ArrayList) List(java.util.List) ScrollableResults(org.hibernate.ScrollableResults) Session(org.hibernate.Session) Test(org.junit.Test) TestForIssue(org.hibernate.testing.TestForIssue)

Example 17 with ScrollableResults

use of org.hibernate.ScrollableResults in project hibernate-orm by hibernate.

the class IterateTest method testScroll.

@Test
public void testScroll() throws Exception {
    sessionFactory().getStatistics().clear();
    Session s = openSession();
    Transaction t = s.beginTransaction();
    Item i1 = new Item("foo");
    Item i2 = new Item("bar");
    s.persist("Item", i1);
    s.persist("Item", i2);
    t.commit();
    s.close();
    s = openSession();
    t = s.beginTransaction();
    ScrollableResults sr = s.getNamedQuery("Item.nameDesc").scroll();
    assertTrue(sr.next());
    i1 = (Item) sr.get(0);
    assertTrue(sr.next());
    i2 = (Item) sr.get(0);
    assertTrue(Hibernate.isInitialized(i1));
    assertTrue(Hibernate.isInitialized(i2));
    assertEquals(i1.getName(), "foo");
    assertEquals(i2.getName(), "bar");
    assertFalse(sr.next());
    s.delete(i1);
    s.delete(i2);
    t.commit();
    s.close();
    assertEquals(sessionFactory().getStatistics().getEntityFetchCount(), 0);
}
Also used : Transaction(org.hibernate.Transaction) ScrollableResults(org.hibernate.ScrollableResults) Session(org.hibernate.Session) Test(org.junit.Test)

Example 18 with ScrollableResults

use of org.hibernate.ScrollableResults in project hibernate-orm by hibernate.

the class FooBarTest method testScrollableIterator.

@Test
public void testScrollableIterator() throws Exception {
    // skip if not one of these named dialects
    boolean match = getDialect() instanceof DB2Dialect || getDialect() instanceof SybaseDialect || getDialect() instanceof HSQLDialect || // 9i/10g too because of inheritence...
    getDialect() instanceof Oracle8iDialect;
    if (!match) {
        return;
    }
    Session s = openSession();
    Transaction txn = s.beginTransaction();
    s.save(new Foo());
    s.save(new Foo());
    s.save(new Foo());
    s.save(new Bar());
    Query query = s.createQuery("select f, f.integer from Foo f");
    assertTrue(query.getReturnTypes().length == 2);
    ScrollableResults iter = query.scroll();
    assertTrue(iter.next());
    assertTrue(iter.scroll(1));
    FooProxy f2 = (FooProxy) iter.get()[0];
    assertTrue(f2 != null);
    assertTrue(iter.scroll(-1));
    Object f1 = iter.get(0);
    iter.next();
    assertTrue(f1 != null && iter.get(0) == f2);
    iter.getInteger(1);
    assertTrue(!iter.scroll(100));
    assertTrue(iter.first());
    assertTrue(iter.scroll(3));
    Object f4 = iter.get(0);
    assertTrue(f4 != null);
    assertTrue(!iter.next());
    assertTrue(iter.first());
    assertTrue(iter.get(0) == f1);
    assertTrue(iter.last());
    assertTrue(iter.get(0) == f4);
    assertTrue(iter.previous());
    txn.commit();
    s.close();
    s = openSession();
    txn = s.beginTransaction();
    query = s.createQuery("select f, f.integer from Foo f");
    assertTrue(query.getReturnTypes().length == 2);
    iter = query.scroll();
    assertTrue(iter.next());
    assertTrue(iter.scroll(1));
    f2 = (FooProxy) iter.get()[0];
    assertTrue(f2 != null);
    assertTrue(f2.getString() != null && f2.getComponent().getImportantDates().length > 0);
    assertTrue(iter.scroll(-1));
    f1 = iter.get(0);
    iter.next();
    assertTrue(f1 != null && iter.get(0) == f2);
    iter.getInteger(1);
    assertTrue(!iter.scroll(100));
    assertTrue(iter.first());
    assertTrue(iter.scroll(3));
    f4 = iter.get(0);
    assertTrue(f4 != null);
    assertTrue(!iter.next());
    assertTrue(iter.first());
    assertTrue(iter.get(0) == f1);
    assertTrue(iter.last());
    assertTrue(iter.get(0) == f4);
    assertTrue(iter.previous());
    int i = 0;
    for (Object entity : s.createQuery("from Foo").list()) {
        i++;
        s.delete(entity);
    }
    assertEquals(4, i);
    s.flush();
    assertTrue(s.createQuery("from java.lang.Object").list().size() == 0);
    txn.commit();
    s.close();
}
Also used : HSQLDialect(org.hibernate.dialect.HSQLDialect) Query(org.hibernate.Query) SybaseDialect(org.hibernate.dialect.SybaseDialect) DB2Dialect(org.hibernate.dialect.DB2Dialect) Oracle8iDialect(org.hibernate.dialect.Oracle8iDialect) Transaction(org.hibernate.Transaction) ScrollableResults(org.hibernate.ScrollableResults) Session(org.hibernate.Session) Test(org.junit.Test)

Example 19 with ScrollableResults

use of org.hibernate.ScrollableResults in project hibernate-orm by hibernate.

the class SQLFunctionsTest method testSQLFunctions.

@Test
public void testSQLFunctions() throws Exception {
    Session s = openSession();
    Transaction t = s.beginTransaction();
    Simple simple = new Simple(Long.valueOf(10));
    simple.setName("Simple 1");
    s.save(simple);
    if (getDialect() instanceof DB2Dialect && !(getDialect() instanceof DerbyDialect)) {
        s.createQuery("from Simple s where repeat('foo', 3) = 'foofoofoo'").list();
        s.createQuery("from Simple s where repeat(s.name, 3) = 'foofoofoo'").list();
        s.createQuery("from Simple s where repeat( lower(s.name), 3 + (1-1) / 2) = 'foofoofoo'").list();
    }
    assertTrue(s.createQuery("from Simple s where upper( s.name ) ='SIMPLE 1'").list().size() == 1);
    if (!(getDialect() instanceof HSQLDialect)) {
        assertTrue(s.createQuery("from Simple s where not( upper( s.name ) ='yada' or 1=2 or 'foo'='bar' or not('foo'='foo') or 'foo' like 'bar' )").list().size() == 1);
    }
    if (!(getDialect() instanceof MySQLDialect) && !(getDialect() instanceof SybaseDialect) && !(getDialect() instanceof SQLServerDialect) && !(getDialect() instanceof MckoiDialect) && !(getDialect() instanceof InterbaseDialect) && !(getDialect() instanceof TimesTenDialect)) {
        //My SQL has a funny concatenation operator
        assertTrue(s.createQuery("from Simple s where lower( s.name || ' foo' ) ='simple 1 foo'").list().size() == 1);
    }
    if ((getDialect() instanceof SybaseDialect)) {
        assertTrue(s.createQuery("from Simple s where lower( s.name + ' foo' ) ='simple 1 foo'").list().size() == 1);
    }
    if ((getDialect() instanceof MckoiDialect) || (getDialect() instanceof TimesTenDialect)) {
        assertTrue(s.createQuery("from Simple s where lower( concat(s.name, ' foo') ) ='simple 1 foo'").list().size() == 1);
    }
    Simple other = new Simple(Long.valueOf(20));
    other.setName("Simple 2");
    other.setCount(12);
    simple.setOther(other);
    s.save(other);
    //s.find("from Simple s where s.name ## 'cat|rat|bag'");
    assertTrue(s.createQuery("from Simple s where upper( s.other.name ) ='SIMPLE 2'").list().size() == 1);
    assertTrue(s.createQuery("from Simple s where not ( upper( s.other.name ) ='SIMPLE 2' )").list().size() == 0);
    assertTrue(s.createQuery("select distinct s from Simple s where ( ( s.other.count + 3 ) = (15*2)/2 and s.count = 69) or ( ( s.other.count + 2 ) / 7 ) = 2").list().size() == 1);
    assertTrue(s.createQuery("select s from Simple s where ( ( s.other.count + 3 ) = (15*2)/2 and s.count = 69) or ( ( s.other.count + 2 ) / 7 ) = 2 order by s.other.count").list().size() == 1);
    Simple min = new Simple(Long.valueOf(30));
    min.setCount(-1);
    s.save(min);
    if (!(getDialect() instanceof MySQLDialect) && !(getDialect() instanceof HSQLDialect)) {
        //My SQL has no subqueries
        assertTrue(s.createQuery("from Simple s where s.count > ( select min(sim.count) from Simple sim )").list().size() == 2);
        t.commit();
        t = s.beginTransaction();
        assertTrue(s.createQuery("from Simple s where s = some( select sim from Simple sim where sim.count>=0 ) and s.count >= 0").list().size() == 2);
        assertTrue(s.createQuery("from Simple s where s = some( select sim from Simple sim where sim.other.count=s.other.count ) and s.other.count > 0").list().size() == 1);
    }
    Iterator iter = s.createQuery("select sum(s.count) from Simple s group by s.count having sum(s.count) > 10").iterate();
    assertTrue(iter.hasNext());
    assertEquals(Long.valueOf(12), iter.next());
    assertTrue(!iter.hasNext());
    if (!(getDialect() instanceof MySQLDialect)) {
        iter = s.createQuery("select s.count from Simple s group by s.count having s.count = 12").iterate();
        assertTrue(iter.hasNext());
    }
    s.createQuery("select s.id, s.count, count(t), max(t.date) from Simple s, Simple t where s.count = t.count group by s.id, s.count order by s.count").iterate();
    Query q = s.createQuery("from Simple s");
    q.setMaxResults(10);
    assertTrue(q.list().size() == 3);
    q = s.createQuery("from Simple s");
    q.setMaxResults(1);
    assertTrue(q.list().size() == 1);
    q = s.createQuery("from Simple s");
    assertTrue(q.list().size() == 3);
    q = s.createQuery("from Simple s where s.name = ?");
    q.setString(0, "Simple 1");
    assertTrue(q.list().size() == 1);
    q = s.createQuery("from Simple s where s.name = ? and upper(s.name) = ?");
    q.setString(1, "SIMPLE 1");
    q.setString(0, "Simple 1");
    q.setFirstResult(0);
    assertTrue(q.iterate().hasNext());
    q = s.createQuery("from Simple s where s.name = :foo and upper(s.name) = :bar or s.count=:count or s.count=:count + 1");
    q.setParameter("bar", "SIMPLE 1");
    q.setString("foo", "Simple 1");
    q.setInteger("count", 69);
    q.setFirstResult(0);
    assertTrue(q.iterate().hasNext());
    q = s.createQuery("select s.id from Simple s");
    q.setFirstResult(1);
    q.setMaxResults(2);
    iter = q.iterate();
    int i = 0;
    while (iter.hasNext()) {
        assertTrue(iter.next() instanceof Long);
        i++;
    }
    assertTrue(i == 2);
    q = s.createQuery("select all s, s.other from Simple s where s = :s");
    q.setParameter("s", simple);
    assertTrue(q.list().size() == 1);
    q = s.createQuery("from Simple s where s.name in (:name_list) and s.count > :count");
    HashSet set = new HashSet();
    set.add("Simple 1");
    set.add("foo");
    q.setParameterList("name_list", set);
    q.setParameter("count", Integer.valueOf(-1));
    assertTrue(q.list().size() == 1);
    ScrollableResults sr = s.createQuery("from Simple s").scroll();
    sr.next();
    sr.get(0);
    sr.close();
    s.delete(other);
    s.delete(simple);
    s.delete(min);
    t.commit();
    s.close();
}
Also used : HSQLDialect(org.hibernate.dialect.HSQLDialect) MckoiDialect(org.hibernate.dialect.MckoiDialect) DerbyDialect(org.hibernate.dialect.DerbyDialect) SQLServerDialect(org.hibernate.dialect.SQLServerDialect) TimesTenDialect(org.hibernate.dialect.TimesTenDialect) Query(org.hibernate.Query) InterbaseDialect(org.hibernate.dialect.InterbaseDialect) SybaseDialect(org.hibernate.dialect.SybaseDialect) DB2Dialect(org.hibernate.dialect.DB2Dialect) MySQLDialect(org.hibernate.dialect.MySQLDialect) Transaction(org.hibernate.Transaction) Iterator(java.util.Iterator) ScrollableResults(org.hibernate.ScrollableResults) Session(org.hibernate.Session) HashSet(java.util.HashSet) Test(org.junit.Test)

Example 20 with ScrollableResults

use of org.hibernate.ScrollableResults in project hibernate-orm by hibernate.

the class ReadOnlyCriteriaQueryTest method testScrollCriteria.

@Test
public void testScrollCriteria() {
    Session session = openSession();
    Transaction t = session.beginTransaction();
    Course course = new Course();
    course.setCourseCode("HIB");
    course.setDescription("Hibernate Training");
    session.persist(course);
    session.flush();
    session.clear();
    ScrollableResults sr = session.createCriteria(Course.class).setReadOnly(true).scroll();
    assertTrue(sr.next());
    course = (Course) sr.get(0);
    assertNotNull(course);
    assertTrue(session.isReadOnly(course));
    sr.close();
    session.delete(course);
    t.commit();
    session.close();
}
Also used : Transaction(org.hibernate.Transaction) ScrollableResults(org.hibernate.ScrollableResults) Session(org.hibernate.Session) Test(org.junit.Test)

Aggregations

ScrollableResults (org.hibernate.ScrollableResults)60 Session (org.hibernate.Session)56 Test (org.junit.Test)52 Transaction (org.hibernate.Transaction)35 List (java.util.List)25 BigDecimal (java.math.BigDecimal)13 ArrayList (java.util.ArrayList)13 TestForIssue (org.hibernate.testing.TestForIssue)12 Query (org.hibernate.Query)9 Iterator (java.util.Iterator)7 SkipForDialect (org.hibernate.testing.SkipForDialect)4 HashMap (java.util.HashMap)3 HashSet (java.util.HashSet)3 Map (java.util.Map)3 StatelessSession (org.hibernate.StatelessSession)3 DB2Dialect (org.hibernate.dialect.DB2Dialect)3 HSQLDialect (org.hibernate.dialect.HSQLDialect)3 SybaseDialect (org.hibernate.dialect.SybaseDialect)3 Query (org.hibernate.query.Query)3 Date (java.util.Date)2