Search in sources :

Example 1 with PointbaseDialect

use of org.hibernate.dialect.PointbaseDialect in project hibernate-orm by hibernate.

the class FooBarTest method testPersistCollections.

@Test
public void testPersistCollections() throws Exception {
    Session s = openSession();
    Transaction txn = s.beginTransaction();
    assertEquals(0l, s.createQuery("select count(*) from Bar").iterate().next());
    assertEquals(0l, s.createQuery("select count(*) from Bar b").iterate().next());
    assertFalse(s.createQuery("from Glarch g").iterate().hasNext());
    Baz baz = new Baz();
    s.save(baz);
    baz.setDefaults();
    baz.setStringArray(new String[] { "stuff" });
    Set bars = new HashSet();
    bars.add(new Bar());
    baz.setCascadingBars(bars);
    HashMap sgm = new HashMap();
    sgm.put("a", new Glarch());
    sgm.put("b", new Glarch());
    baz.setStringGlarchMap(sgm);
    txn.commit();
    s.close();
    s = openSession();
    txn = s.beginTransaction();
    assertEquals(1L, ((Long) s.createQuery("select count(*) from Bar").iterate().next()).longValue());
    baz = (Baz) ((Object[]) s.createQuery("select baz, baz from Baz baz").list().get(0))[1];
    assertTrue(baz.getCascadingBars().size() == 1);
    //System.out.println( s.print(baz) );
    Foo foo = new Foo();
    s.save(foo);
    Foo foo2 = new Foo();
    s.save(foo2);
    baz.setFooArray(new Foo[] { foo, foo, null, foo2 });
    baz.getFooSet().add(foo);
    baz.getCustoms().add(new String[] { "new", "custom" });
    baz.setStringArray(null);
    baz.getStringList().set(0, "new value");
    baz.setStringSet(new TreeSet());
    Time time = new java.sql.Time(12345);
    baz.getTimeArray()[2] = time;
    //System.out.println(time);
    assertTrue(baz.getStringGlarchMap().size() == 1);
    //The following test is disabled databases with no subselects
    if (!(getDialect() instanceof MySQLDialect) && !(getDialect() instanceof HSQLDialect) && !(getDialect() instanceof PointbaseDialect)) {
        List list = s.createQuery("select foo from Foo foo, Baz baz where foo in elements(baz.fooArray) and 3 = some elements(baz.intArray) and 4 > all indices(baz.intArray)").list();
        assertTrue("collection.elements find", list.size() == 2);
    }
    if (!(getDialect() instanceof SAPDBDialect)) {
        // SAPDB doesn't like distinct with binary type
        List list = s.createQuery("select distinct foo from Baz baz join baz.fooArray foo").list();
        assertTrue("collection.elements find", list.size() == 2);
    }
    List list = s.createQuery("select foo from Baz baz join baz.fooSet foo").list();
    assertTrue("association.elements find", list.size() == 1);
    txn.commit();
    s.close();
    s = openSession();
    txn = s.beginTransaction();
    assertEquals(1, ((Long) s.createQuery("select count(*) from Bar").iterate().next()).longValue());
    baz = (Baz) s.createQuery("select baz from Baz baz order by baz").list().get(0);
    assertTrue("collection of custom types - added element", baz.getCustoms().size() == 4 && baz.getCustoms().get(0) != null);
    assertTrue("component of component in collection", baz.getComponents()[1].getSubcomponent() != null);
    assertTrue(baz.getComponents()[1].getBaz() == baz);
    assertTrue("set of objects", ((FooProxy) baz.getFooSet().iterator().next()).getKey().equals(foo.getKey()));
    assertTrue("collection removed", baz.getStringArray().length == 0);
    assertTrue("changed element", baz.getStringList().get(0).equals("new value"));
    assertTrue("replaced set", baz.getStringSet().size() == 0);
    assertTrue("array element change", baz.getTimeArray()[2] != null);
    assertTrue(baz.getCascadingBars().size() == 1);
    //System.out.println( s.print(baz) );
    baz.getStringSet().add("two");
    baz.getStringSet().add("one");
    baz.getBag().add("three");
    txn.commit();
    s.close();
    s = openSession();
    txn = s.beginTransaction();
    baz = (Baz) s.createQuery("select baz from Baz baz order by baz").list().get(0);
    assertTrue(baz.getStringSet().size() == 2);
    assertTrue(baz.getStringSet().first().equals("one"));
    assertTrue(baz.getStringSet().last().equals("two"));
    assertTrue(baz.getBag().size() == 5);
    baz.getStringSet().remove("two");
    baz.getBag().remove("duplicate");
    txn.commit();
    s.close();
    s = openSession();
    txn = s.beginTransaction();
    assertEquals(1, ((Long) s.createQuery("select count(*) from Bar").iterate().next()).longValue());
    baz = (Baz) s.load(Baz.class, baz.getCode());
    assertTrue(baz.getCascadingBars().size() == 1);
    Bar bar = new Bar();
    Bar bar2 = new Bar();
    s.save(bar);
    s.save(bar2);
    baz.setTopFoos(new HashSet());
    baz.getTopFoos().add(bar);
    baz.getTopFoos().add(bar2);
    assertTrue(baz.getCascadingBars().size() == 1);
    baz.setTopGlarchez(new TreeMap());
    GlarchProxy g = new Glarch();
    s.save(g);
    baz.getTopGlarchez().put('G', g);
    HashMap map = new HashMap();
    map.put(bar, g);
    map.put(bar2, g);
    baz.setFooToGlarch(map);
    map = new HashMap();
    map.put(new FooComponent("name", 123, null, null), bar);
    map.put(new FooComponent("nameName", 12, null, null), bar);
    baz.setFooComponentToFoo(map);
    map = new HashMap();
    map.put(bar, g);
    baz.setGlarchToFoo(map);
    txn.commit();
    s.close();
    s = openSession();
    txn = s.beginTransaction();
    baz = (Baz) s.createQuery("select baz from Baz baz order by baz").list().get(0);
    assertTrue(baz.getCascadingBars().size() == 1);
    Session s2 = openSession();
    Transaction txn2 = s2.beginTransaction();
    assertEquals(3, ((Long) s2.createQuery("select count(*) from Bar").iterate().next()).longValue());
    Baz baz2 = (Baz) s2.createQuery("select baz from Baz baz order by baz").list().get(0);
    Object o = baz2.getFooComponentToFoo().get(new FooComponent("name", 123, null, null));
    assertTrue(o == baz2.getFooComponentToFoo().get(new FooComponent("nameName", 12, null, null)) && o != null);
    txn2.commit();
    s2.close();
    assertTrue(Hibernate.isInitialized(baz.getFooToGlarch()));
    assertTrue(baz.getTopFoos().size() == 2);
    assertTrue(baz.getTopGlarchez().size() == 1);
    assertTrue(baz.getTopFoos().iterator().next() != null);
    assertTrue(baz.getStringSet().size() == 1);
    assertTrue(baz.getBag().size() == 4);
    assertTrue(baz.getFooToGlarch().size() == 2);
    assertTrue(baz.getFooComponentToFoo().size() == 2);
    assertTrue(baz.getGlarchToFoo().size() == 1);
    Iterator iter = baz.getFooToGlarch().keySet().iterator();
    for (int i = 0; i < 2; i++) assertTrue(iter.next() instanceof BarProxy);
    FooComponent fooComp = (FooComponent) baz.getFooComponentToFoo().keySet().iterator().next();
    assertTrue(((fooComp.getCount() == 123 && fooComp.getName().equals("name")) || (fooComp.getCount() == 12 && fooComp.getName().equals("nameName"))) && (baz.getFooComponentToFoo().get(fooComp) instanceof BarProxy));
    Glarch g2 = new Glarch();
    s.save(g2);
    g = (GlarchProxy) baz.getTopGlarchez().get('G');
    baz.getTopGlarchez().put('H', g);
    baz.getTopGlarchez().put('G', g2);
    txn.commit();
    s.close();
    s = openSession();
    txn = s.beginTransaction();
    baz = (Baz) s.load(Baz.class, baz.getCode());
    assertTrue(baz.getTopGlarchez().size() == 2);
    assertTrue(baz.getCascadingBars().size() == 1);
    txn.commit();
    s.close();
    s = openSession();
    txn = s.beginTransaction();
    assertEquals(3, ((Long) s.createQuery("select count(*) from Bar").iterate().next()).longValue());
    baz = (Baz) s.createQuery("select baz from Baz baz order by baz").list().get(0);
    assertTrue(baz.getTopGlarchez().size() == 2);
    assertTrue(baz.getCascadingBars().size() == 1);
    txn.commit();
    final Session s3 = (Session) SerializationHelper.deserialize(SerializationHelper.serialize(s));
    s.close();
    txn2 = s3.beginTransaction();
    baz = (Baz) s3.load(Baz.class, baz.getCode());
    assertEquals(3, ((Long) s3.createQuery("select count(*) from Bar").iterate().next()).longValue());
    s3.delete(baz);
    s3.delete(baz.getTopGlarchez().get('G'));
    s3.delete(baz.getTopGlarchez().get('H'));
    int rows = s3.doReturningWork(new AbstractReturningWork<Integer>() {

        @Override
        public Integer execute(Connection connection) throws SQLException {
            final String sql = "update " + getDialect().openQuote() + "glarchez" + getDialect().closeQuote() + " set baz_map_id=null where baz_map_index='a'";
            Statement st = connection.createStatement();
            return st.executeUpdate(sql);
        }
    });
    assertTrue(rows == 1);
    assertEquals(2, doDelete(s3, "from Bar bar"));
    FooProxy[] arr = baz.getFooArray();
    assertTrue("new array of objects", arr.length == 4 && arr[1].getKey().equals(foo.getKey()));
    for (int i = 1; i < arr.length; i++) {
        if (arr[i] != null)
            s3.delete(arr[i]);
    }
    //nonexistent
    s3.load(Qux.class, new Long(666));
    assertEquals(1, doDelete(s3, "from Glarch g"));
    txn2.commit();
    s3.disconnect();
    Session s4 = (Session) SerializationHelper.deserialize(SerializationHelper.serialize(s3));
    s3.close();
    //s3.reconnect();
    //nonexistent
    assertTrue(s4.load(Qux.class, new Long(666)) != null);
    //s3.disconnect();
    s4.close();
}
Also used : SortedSet(java.util.SortedSet) Set(java.util.Set) TreeSet(java.util.TreeSet) HashSet(java.util.HashSet) HashMap(java.util.HashMap) SQLException(java.sql.SQLException) Time(java.sql.Time) MySQLDialect(org.hibernate.dialect.MySQLDialect) TreeSet(java.util.TreeSet) JoinedIterator(org.hibernate.internal.util.collections.JoinedIterator) Iterator(java.util.Iterator) List(java.util.List) ArrayList(java.util.ArrayList) HashSet(java.util.HashSet) HSQLDialect(org.hibernate.dialect.HSQLDialect) Statement(java.sql.Statement) Connection(java.sql.Connection) PointbaseDialect(org.hibernate.dialect.PointbaseDialect) TreeMap(java.util.TreeMap) SAPDBDialect(org.hibernate.dialect.SAPDBDialect) Transaction(org.hibernate.Transaction) Session(org.hibernate.Session) Test(org.junit.Test)

Example 2 with PointbaseDialect

use of org.hibernate.dialect.PointbaseDialect in project hibernate-orm by hibernate.

the class FooBarTest method testQueryCollectionOfValues.

@Test
public void testQueryCollectionOfValues() throws Exception {
    Session s = openSession();
    s.beginTransaction();
    Baz baz = new Baz();
    baz.setDefaults();
    s.save(baz);
    Glarch g = new Glarch();
    Serializable gid = s.save(g);
    if (!(getDialect() instanceof MySQLDialect) && !(getDialect() instanceof HSQLDialect) && /*&& !(dialect instanceof MckoiDialect)*/
    !(getDialect() instanceof SAPDBDialect) && !(getDialect() instanceof PointbaseDialect) && !(getDialect() instanceof TimesTenDialect)) {
        s.createFilter(baz.getFooArray(), "where size(this.bytes) > 0").list();
        s.createFilter(baz.getFooArray(), "where 0 in elements(this.bytes)").list();
    }
    s.getTransaction().commit();
    s.close();
    s = openSession();
    s.beginTransaction();
    s.createQuery("from Baz baz join baz.fooSet foo join foo.foo.foo foo2 where foo2.string = 'foo'").list();
    s.createQuery("from Baz baz join baz.fooArray foo join foo.foo.foo foo2 where foo2.string = 'foo'").list();
    s.createQuery("from Baz baz join baz.stringDateMap date where index(date) = 'foo'").list();
    s.createQuery("from Baz baz join baz.topGlarchez g where index(g) = 'A'").list();
    s.createQuery("select index(g) from Baz baz join baz.topGlarchez g").list();
    assertTrue(s.createQuery("from Baz baz left join baz.stringSet").list().size() == 3);
    baz = (Baz) s.createQuery("from Baz baz join baz.stringSet str where str='foo'").list().get(0);
    assertTrue(!Hibernate.isInitialized(baz.getStringSet()));
    baz = (Baz) s.createQuery("from Baz baz left join fetch baz.stringSet").list().get(0);
    assertTrue(Hibernate.isInitialized(baz.getStringSet()));
    assertTrue(s.createQuery("from Baz baz join baz.stringSet string where string='foo'").list().size() == 1);
    assertTrue(s.createQuery("from Baz baz inner join baz.components comp where comp.name='foo'").list().size() == 1);
    //List bss = s.find("select baz, ss from Baz baz inner join baz.stringSet ss");
    s.createQuery("from Glarch g inner join g.fooComponents comp where comp.fee is not null").list();
    s.createQuery("from Glarch g inner join g.fooComponents comp join comp.fee fee where fee.count > 0").list();
    s.createQuery("from Glarch g inner join g.fooComponents comp where comp.fee.count is not null").list();
    s.delete(baz);
    s.delete(s.get(Glarch.class, gid));
    s.getTransaction().commit();
    s.close();
}
Also used : HSQLDialect(org.hibernate.dialect.HSQLDialect) SAPDBDialect(org.hibernate.dialect.SAPDBDialect) MySQLDialect(org.hibernate.dialect.MySQLDialect) Serializable(java.io.Serializable) TimesTenDialect(org.hibernate.dialect.TimesTenDialect) PointbaseDialect(org.hibernate.dialect.PointbaseDialect) Session(org.hibernate.Session) Test(org.junit.Test)

Example 3 with PointbaseDialect

use of org.hibernate.dialect.PointbaseDialect in project hibernate-orm by hibernate.

the class FooBarTest method testAutoFlush.

@Test
public void testAutoFlush() throws Exception {
    Session s = openSession();
    Transaction txn = s.beginTransaction();
    FooProxy foo = new Foo();
    s.save(foo);
    assertTrue("autoflush create", s.createQuery("from Foo foo").list().size() == 1);
    foo.setChar('X');
    assertTrue("autoflush update", s.createQuery("from Foo foo where foo.char='X'").list().size() == 1);
    txn.commit();
    s.close();
    s = openSession();
    txn = s.beginTransaction();
    foo = (FooProxy) s.load(Foo.class, foo.getKey());
    //assertTrue( s.find("from Foo foo where not foo.char='X'").size()==1, "autoflush update" );
    if (!(getDialect() instanceof MySQLDialect) && !(getDialect() instanceof HSQLDialect) && !(getDialect() instanceof PointbaseDialect)) {
        foo.setBytes("osama".getBytes());
        assertTrue("autoflush collection update", s.createQuery("from Foo foo where 111 in elements(foo.bytes)").list().size() == 1);
        foo.getBytes()[0] = 69;
        assertTrue("autoflush collection update", s.createQuery("from Foo foo where 69 in elements(foo.bytes)").list().size() == 1);
    }
    s.delete(foo);
    assertTrue("autoflush delete", s.createQuery("from Foo foo").list().size() == 0);
    txn.commit();
    s.close();
}
Also used : HSQLDialect(org.hibernate.dialect.HSQLDialect) MySQLDialect(org.hibernate.dialect.MySQLDialect) Transaction(org.hibernate.Transaction) PointbaseDialect(org.hibernate.dialect.PointbaseDialect) Session(org.hibernate.Session) Test(org.junit.Test)

Example 4 with PointbaseDialect

use of org.hibernate.dialect.PointbaseDialect in project hibernate-orm by hibernate.

the class FooBarTest method testCollectionsInSelect.

@Test
public void testCollectionsInSelect() throws Exception {
    Session s = openSession();
    Transaction t = s.beginTransaction();
    Foo[] foos = new Foo[] { null, new Foo() };
    s.save(foos[1]);
    Baz baz = new Baz();
    baz.setDefaults();
    baz.setFooArray(foos);
    s.save(baz);
    Baz baz2 = new Baz();
    baz2.setDefaults();
    s.save(baz2);
    Bar bar = new Bar();
    bar.setBaz(baz);
    s.save(bar);
    List list = s.createQuery("select new Result(foo.string, foo.long, foo.integer) from Foo foo").list();
    assertTrue(list.size() == 2 && (list.get(0) instanceof Result) && (list.get(1) instanceof Result));
    /*list = s.find("select new Result( baz.name, foo.long, count(elements(baz.fooArray)) ) from Baz baz join baz.fooArray foo group by baz.name, foo.long");
		assertTrue( list.size()==1 && ( list.get(0) instanceof Result ) );
		Result r = ((Result) list.get(0) );
		assertEquals( r.getName(), baz.getName() );
		assertEquals( r.getCount(), 1 );
		assertEquals( r.getAmount(), foos[1].getLong().longValue() );*/
    list = s.createQuery("select new Result( baz.name, max(foo.long), count(foo) ) from Baz baz join baz.fooArray foo group by baz.name").list();
    assertTrue(list.size() == 1 && (list.get(0) instanceof Result));
    Result r = ((Result) list.get(0));
    assertEquals(r.getName(), baz.getName());
    assertEquals(r.getCount(), 1);
    assertTrue(r.getAmount() > 696969696969696000l);
    //The following test is disabled for databases with no subselects...also for Interbase (not sure why).
    if (!(getDialect() instanceof MySQLDialect) && !(getDialect() instanceof HSQLDialect) && /*&& !(dialect instanceof MckoiDialect)*/
    !(getDialect() instanceof SAPDBDialect) && !(getDialect() instanceof PointbaseDialect)) {
        s.createQuery("select count(*) from Baz as baz where 1 in indices(baz.fooArray)").list();
        s.createQuery("select count(*) from Bar as bar where 'abc' in elements(bar.baz.fooArray)").list();
        s.createQuery("select count(*) from Bar as bar where 1 in indices(bar.baz.fooArray)").list();
        if (!(getDialect() instanceof DB2Dialect) && !(getDialect() instanceof Oracle8iDialect) && !(getDialect() instanceof SybaseDialect) && !(getDialect() instanceof Sybase11Dialect) && !(getDialect() instanceof SybaseASE15Dialect) && !(getDialect() instanceof PostgreSQLDialect) && !(getDialect() instanceof PostgreSQL81Dialect) && !(getDialect() instanceof AbstractHANADialect)) {
            // SybaseAnywhereDialect supports implicit conversions from strings to ints
            s.createQuery("select count(*) from Bar as bar, bar.component.glarch.proxyArray as g where g.id in indices(bar.baz.fooArray)").list();
            s.createQuery("select max( elements(bar.baz.fooArray) ) from Bar as bar, bar.component.glarch.proxyArray as g where g.id in indices(bar.baz.fooArray)").list();
        }
        s.createQuery("select count(*) from Bar as bar where '1' in (from bar.component.glarch.proxyArray g where g.name='foo')").list();
        s.createQuery("select count(*) from Bar as bar where '1' in (from bar.component.glarch.proxyArray g where g.name='foo')").list();
        s.createQuery("select count(*) from Bar as bar left outer join bar.component.glarch.proxyArray as pg where '1' in (from bar.component.glarch.proxyArray)").list();
    }
    list = s.createQuery("from Baz baz left join baz.fooToGlarch join fetch baz.fooArray foo left join fetch foo.foo").list();
    assertTrue(list.size() == 1 && ((Object[]) list.get(0)).length == 2);
    s.createQuery("select baz.name from Bar bar inner join bar.baz baz inner join baz.fooSet foo where baz.name = bar.string").list();
    s.createQuery("SELECT baz.name FROM Bar AS bar INNER JOIN bar.baz AS baz INNER JOIN baz.fooSet AS foo WHERE baz.name = bar.string").list();
    if (!(getDialect() instanceof HSQLDialect))
        s.createQuery("select baz.name from Bar bar join bar.baz baz left outer join baz.fooSet foo where baz.name = bar.string").list();
    s.createQuery("select baz.name from Bar bar join bar.baz baz join baz.fooSet foo where baz.name = bar.string").list();
    s.createQuery("SELECT baz.name FROM Bar AS bar JOIN bar.baz AS baz JOIN baz.fooSet AS foo WHERE baz.name = bar.string").list();
    if (!(getDialect() instanceof HSQLDialect)) {
        s.createQuery("select baz.name from Bar bar left join bar.baz baz left join baz.fooSet foo where baz.name = bar.string").list();
        s.createQuery("select foo.string from Bar bar left join bar.baz.fooSet foo where bar.string = foo.string").list();
    }
    s.createQuery("select baz.name from Bar bar left join bar.baz baz left join baz.fooArray foo where baz.name = bar.string").list();
    s.createQuery("select foo.string from Bar bar left join bar.baz.fooArray foo where bar.string = foo.string").list();
    s.createQuery("select bar.string, foo.string from Bar bar inner join bar.baz as baz inner join baz.fooSet as foo where baz.name = 'name'").list();
    s.createQuery("select foo from Bar bar inner join bar.baz as baz inner join baz.fooSet as foo").list();
    s.createQuery("select foo from Bar bar inner join bar.baz.fooSet as foo").list();
    s.createQuery("select bar.string, foo.string from Bar bar join bar.baz as baz join baz.fooSet as foo where baz.name = 'name'").list();
    s.createQuery("select foo from Bar bar join bar.baz as baz join baz.fooSet as foo").list();
    s.createQuery("select foo from Bar bar join bar.baz.fooSet as foo").list();
    assertTrue(s.createQuery("from Bar bar join bar.baz.fooArray foo").list().size() == 1);
    assertTrue(s.createQuery("from Bar bar join bar.baz.fooSet foo").list().size() == 0);
    assertTrue(s.createQuery("from Bar bar join bar.baz.fooArray foo").list().size() == 1);
    s.delete(bar);
    if (getDialect() instanceof DB2Dialect || getDialect() instanceof PostgreSQLDialect || getDialect() instanceof PostgreSQL81Dialect) {
        s.createQuery("select one from One one join one.manies many group by one order by count(many)").iterate();
        s.createQuery("select one from One one join one.manies many group by one having count(many) < 5").iterate();
    }
    s.createQuery("from One one join one.manies many where one.id = 1 and many.id = 1").list();
    s.createQuery("select one.id, elements(one.manies) from One one").iterate();
    s.createQuery("select max( elements(one.manies) ) from One one").iterate();
    s.createQuery("select one, elements(one.manies) from One one").list();
    Iterator iter = s.createQuery("select elements(baz.fooArray) from Baz baz where baz.id=?").setParameter(0, baz.getCode(), StandardBasicTypes.STRING).iterate();
    assertTrue(iter.next() == foos[1] && !iter.hasNext());
    list = s.createQuery("select elements(baz.fooArray) from Baz baz where baz.id=?").setParameter(0, baz.getCode(), StandardBasicTypes.STRING).list();
    assertEquals(1, list.size());
    iter = s.createQuery("select indices(baz.fooArray) from Baz baz where baz.id=?").setParameter(0, baz.getCode(), StandardBasicTypes.STRING).iterate();
    assertTrue(iter.next().equals(new Integer(1)) && !iter.hasNext());
    iter = s.createQuery("select size(baz.stringSet) from Baz baz where baz.id=?").setParameter(0, baz.getCode(), StandardBasicTypes.STRING).iterate();
    assertEquals(new Integer(3), iter.next());
    s.createQuery("from Foo foo where foo.component.glarch.id is not null").list();
    iter = s.createQuery("select baz, size(baz.stringSet), count( distinct elements(baz.stringSet) ), max( elements(baz.stringSet) ) from Baz baz group by baz").iterate();
    while (iter.hasNext()) {
        Object[] arr = (Object[]) iter.next();
        log.info(arr[0] + " " + arr[1] + " " + arr[2] + " " + arr[3]);
    }
    s.delete(baz);
    s.delete(baz2);
    s.delete(foos[1]);
    t.commit();
    s.close();
}
Also used : HSQLDialect(org.hibernate.dialect.HSQLDialect) SybaseASE15Dialect(org.hibernate.dialect.SybaseASE15Dialect) SybaseDialect(org.hibernate.dialect.SybaseDialect) PointbaseDialect(org.hibernate.dialect.PointbaseDialect) DB2Dialect(org.hibernate.dialect.DB2Dialect) Oracle8iDialect(org.hibernate.dialect.Oracle8iDialect) PostgreSQL81Dialect(org.hibernate.dialect.PostgreSQL81Dialect) SAPDBDialect(org.hibernate.dialect.SAPDBDialect) AbstractHANADialect(org.hibernate.dialect.AbstractHANADialect) MySQLDialect(org.hibernate.dialect.MySQLDialect) PostgreSQLDialect(org.hibernate.dialect.PostgreSQLDialect) Transaction(org.hibernate.Transaction) JoinedIterator(org.hibernate.internal.util.collections.JoinedIterator) Iterator(java.util.Iterator) Sybase11Dialect(org.hibernate.dialect.Sybase11Dialect) List(java.util.List) ArrayList(java.util.ArrayList) Session(org.hibernate.Session) Test(org.junit.Test)

Example 5 with PointbaseDialect

use of org.hibernate.dialect.PointbaseDialect in project hibernate-orm by hibernate.

the class FooBarTest method testQuery.

@Test
public void testQuery() throws Exception {
    Session s = openSession();
    Transaction txn = s.beginTransaction();
    Foo foo = new Foo();
    s.save(foo);
    Foo foo2 = new Foo();
    s.save(foo2);
    foo.setFoo(foo2);
    List list = s.createQuery("from Foo foo inner join fetch foo.foo").list();
    Foo foof = (Foo) list.get(0);
    assertTrue(Hibernate.isInitialized(foof.getFoo()));
    s.createQuery("from Baz baz left outer join fetch baz.fooToGlarch").list();
    list = s.createQuery("select foo, bar from Foo foo left outer join foo.foo bar where foo = ?").setParameter(0, foo, s.getTypeHelper().entity(Foo.class)).list();
    Object[] row1 = (Object[]) list.get(0);
    assertTrue(row1[0] == foo && row1[1] == foo2);
    s.createQuery("select foo.foo.foo.string from Foo foo where foo.foo = 'bar'").list();
    s.createQuery("select foo.foo.foo.foo.string from Foo foo where foo.foo = 'bar'").list();
    s.createQuery("select foo from Foo foo where foo.foo.foo = 'bar'").list();
    s.createQuery("select foo.foo.foo.foo.string from Foo foo where foo.foo.foo = 'bar'").list();
    s.createQuery("select foo.foo.foo.string from Foo foo where foo.foo.foo.foo.string = 'bar'").list();
    if (!(getDialect() instanceof HSQLDialect))
        s.createQuery("select foo.string from Foo foo where foo.foo.foo.foo = foo.foo.foo").list();
    s.createQuery("select foo.string from Foo foo where foo.foo.foo = 'bar' and foo.foo.foo.foo = 'baz'").list();
    s.createQuery("select foo.string from Foo foo where foo.foo.foo.foo.string = 'a' and foo.foo.string = 'b'").list();
    s.createQuery("from Bar bar, foo in elements(bar.baz.fooArray)").list();
    if ((getDialect() instanceof DB2Dialect) && !(getDialect() instanceof DerbyDialect)) {
        s.createQuery("from Foo foo where lower( foo.foo.string ) = 'foo'").list();
        s.createQuery("from Foo foo where lower( (foo.foo.string || 'foo') || 'bar' ) = 'foo'").list();
        s.createQuery("from Foo foo where repeat( (foo.foo.string || 'foo') || 'bar', 2 ) = 'foo'").list();
        s.createQuery("from Bar foo where foo.foo.integer is not null and repeat( (foo.foo.string || 'foo') || 'bar', (5+5)/2 ) = 'foo'").list();
        s.createQuery("from Bar foo where foo.foo.integer is not null or repeat( (foo.foo.string || 'foo') || 'bar', (5+5)/2 ) = 'foo'").list();
    }
    if (getDialect() instanceof SybaseDialect) {
        s.createQuery("select baz from Baz as baz join baz.fooArray foo group by baz order by sum(foo.float)").iterate();
    }
    s.createQuery("from Foo as foo where foo.component.glarch.name is not null").list();
    s.createQuery("from Foo as foo left outer join foo.component.glarch as glarch where glarch.name = 'foo'").list();
    list = s.createQuery("from Foo").list();
    assertTrue(list.size() == 2 && list.get(0) instanceof FooProxy);
    list = s.createQuery("from Foo foo left outer join foo.foo").list();
    assertTrue(list.size() == 2 && ((Object[]) list.get(0))[0] instanceof FooProxy);
    s.createQuery("from Bar, Bar").list();
    s.createQuery("from Foo, Bar").list();
    s.createQuery("from Baz baz left join baz.fooToGlarch, Bar bar join bar.foo").list();
    s.createQuery("from Baz baz left join baz.fooToGlarch join baz.fooSet").list();
    s.createQuery("from Baz baz left join baz.fooToGlarch join fetch baz.fooSet foo left join fetch foo.foo").list();
    list = s.createQuery("from Foo foo where foo.string='osama bin laden' and foo.boolean = true order by foo.string asc, foo.component.count desc").list();
    assertTrue("empty query", list.size() == 0);
    Iterator iter = s.createQuery("from Foo foo where foo.string='osama bin laden' order by foo.string asc, foo.component.count desc").iterate();
    assertTrue("empty iterator", !iter.hasNext());
    list = s.createQuery("select foo.foo from Foo foo").list();
    assertTrue("query", list.size() == 1);
    assertTrue("returned object", list.get(0) == foo.getFoo());
    foo.getFoo().setFoo(foo);
    foo.setString("fizard");
    //The following test is disabled for databases with no subselects...also for Interbase (not sure why).
    if (!(getDialect() instanceof MySQLDialect) && !(getDialect() instanceof HSQLDialect) && !(getDialect() instanceof MckoiDialect) && !(getDialect() instanceof SAPDBDialect) && !(getDialect() instanceof PointbaseDialect) && !(getDialect() instanceof DerbyDialect)) {
        // && !db.equals("weblogic") {
        if (!(getDialect() instanceof InterbaseDialect)) {
            list = s.createQuery("from Foo foo where ? = some elements(foo.component.importantDates)").setParameter(0, foo.getTimestamp(), StandardBasicTypes.DATE).list();
            assertTrue("component query", list.size() == 2);
        }
        if (!(getDialect() instanceof TimesTenDialect)) {
            //WAS: 4
            list = s.createQuery("from Foo foo where size(foo.component.importantDates) = 3").list();
            assertTrue("component query", list.size() == 2);
            list = s.createQuery("from Foo foo where 0 = size(foo.component.importantDates)").list();
            assertTrue("component query", list.size() == 0);
        }
        list = s.createQuery("from Foo foo where exists elements(foo.component.importantDates)").list();
        assertTrue("component query", list.size() == 2);
        s.createQuery("from Foo foo where not exists (from Bar bar where bar.id = foo.id)").list();
        s.createQuery("select foo.foo from Foo foo where foo = some(select x from Foo x where x.long > foo.foo.long)").list();
        s.createQuery("select foo.foo from Foo foo where foo = some(from Foo x where (x.long > foo.foo.long))").list();
        if (!(getDialect() instanceof TimesTenDialect)) {
            s.createQuery("select foo.foo from Foo foo where foo.long = some( select max(x.long) from Foo x where (x.long > foo.foo.long) group by x.foo )").list();
        }
        s.createQuery("from Foo foo where foo = some(select x from Foo x where x.long > foo.foo.long) and foo.foo.string='baz'").list();
        s.createQuery("from Foo foo where foo.foo.string='baz' and foo = some(select x from Foo x where x.long > foo.foo.long)").list();
        s.createQuery("from Foo foo where foo = some(select x from Foo x where x.long > foo.foo.long)").list();
        s.createQuery("select foo.string, foo.date, foo.foo.string, foo.id from Foo foo, Baz baz where foo in elements(baz.fooArray) and foo.string like 'foo'").iterate();
    }
    list = s.createQuery("from Foo foo where foo.component.count is null order by foo.component.count").list();
    assertTrue("component query", list.size() == 0);
    list = s.createQuery("from Foo foo where foo.component.name='foo'").list();
    assertTrue("component query", list.size() == 2);
    list = s.createQuery("select distinct foo.component.name, foo.component.name from Foo foo where foo.component.name='foo'").list();
    assertTrue("component query", list.size() == 1);
    list = s.createQuery("select distinct foo.component.name, foo.id from Foo foo where foo.component.name='foo'").list();
    assertTrue("component query", list.size() == 2);
    list = s.createQuery("select foo.foo from Foo foo").list();
    assertTrue("query", list.size() == 2);
    list = s.createQuery("from Foo foo where foo.id=?").setParameter(0, foo.getKey(), StandardBasicTypes.STRING).list();
    assertTrue("id query", list.size() == 1);
    list = s.createQuery("from Foo foo where foo.key=?").setParameter(0, foo.getKey(), StandardBasicTypes.STRING).list();
    assertTrue("named id query", list.size() == 1);
    assertTrue("id query", list.get(0) == foo);
    list = s.createQuery("select foo.foo from Foo foo where foo.string='fizard'").list();
    assertTrue("query", list.size() == 1);
    assertTrue("returned object", list.get(0) == foo.getFoo());
    list = s.createQuery("from Foo foo where foo.component.subcomponent.name='bar'").list();
    assertTrue("components of components", list.size() == 2);
    list = s.createQuery("select foo.foo from Foo foo where foo.foo.id=?").setParameter(0, foo.getFoo().getKey(), StandardBasicTypes.STRING).list();
    assertTrue("by id query", list.size() == 1);
    assertTrue("by id returned object", list.get(0) == foo.getFoo());
    s.createQuery("from Foo foo where foo.foo = ?").setParameter(0, foo.getFoo(), s.getTypeHelper().entity(Foo.class)).list();
    assertTrue(!s.createQuery("from Bar bar where bar.string='a string' or bar.string='a string'").iterate().hasNext());
    iter = s.createQuery("select foo.component.name, elements(foo.component.importantDates) from Foo foo where foo.foo.id=?").setParameter(0, foo.getFoo().getKey(), StandardBasicTypes.STRING).iterate();
    int i = 0;
    while (iter.hasNext()) {
        i++;
        Object[] row = (Object[]) iter.next();
        assertTrue(row[0] instanceof String && (row[1] == null || row[1] instanceof Date));
    }
    //WAS: 4
    assertTrue(i == 3);
    iter = s.createQuery("select max( elements(foo.component.importantDates) ) from Foo foo group by foo.id").iterate();
    assertTrue(iter.next() instanceof Date);
    list = s.createQuery("select foo.foo.foo.foo from Foo foo, Foo foo2 where" + " foo = foo2.foo and not not ( not foo.string='fizard' )" + " and foo2.string between 'a' and (foo.foo.string)" + ((getDialect() instanceof HSQLDialect || getDialect() instanceof InterbaseDialect || getDialect() instanceof TimesTenDialect || getDialect() instanceof TeradataDialect) ? " and ( foo2.string in ( 'fiz', 'blah') or 1=1 )" : " and ( foo2.string in ( 'fiz', 'blah', foo.foo.string, foo.string, foo2.string ) )")).list();
    assertTrue("complex query", list.size() == 1);
    assertTrue("returned object", list.get(0) == foo);
    foo.setString("from BoogieDown  -tinsel town  =!@#$^&*())");
    list = s.createQuery("from Foo foo where foo.string='from BoogieDown  -tinsel town  =!@#$^&*())'").list();
    assertTrue("single quotes", list.size() == 1);
    list = s.createQuery("from Foo foo where not foo.string='foo''bar'").list();
    assertTrue("single quotes", list.size() == 2);
    list = s.createQuery("from Foo foo where foo.component.glarch.next is null").list();
    assertTrue("query association in component", list.size() == 2);
    Bar bar = new Bar();
    Baz baz = new Baz();
    baz.setDefaults();
    bar.setBaz(baz);
    baz.setManyToAny(new ArrayList());
    baz.getManyToAny().add(bar);
    baz.getManyToAny().add(foo);
    s.save(bar);
    s.save(baz);
    list = s.createQuery(" from Bar bar where bar.baz.count=667 and bar.baz.count!=123 and not bar.baz.name='1-E-1'").list();
    assertTrue("query many-to-one", list.size() == 1);
    list = s.createQuery(" from Bar i where i.baz.name='Bazza'").list();
    assertTrue("query many-to-one", list.size() == 1);
    Iterator rs = s.createQuery("select count(distinct foo.foo) from Foo foo").iterate();
    assertTrue("count", ((Long) rs.next()).longValue() == 2);
    assertTrue(!rs.hasNext());
    rs = s.createQuery("select count(foo.foo.boolean) from Foo foo").iterate();
    assertTrue("count", ((Long) rs.next()).longValue() == 2);
    assertTrue(!rs.hasNext());
    rs = s.createQuery("select count(*), foo.int from Foo foo group by foo.int").iterate();
    assertTrue("count(*) group by", ((Object[]) rs.next())[0].equals(new Long(3)));
    assertTrue(!rs.hasNext());
    rs = s.createQuery("select sum(foo.foo.int) from Foo foo").iterate();
    assertTrue("sum", ((Long) rs.next()).longValue() == 4);
    assertTrue(!rs.hasNext());
    rs = s.createQuery("select count(foo) from Foo foo where foo.id=?").setParameter(0, foo.getKey(), StandardBasicTypes.STRING).iterate();
    assertTrue("id query count", ((Long) rs.next()).longValue() == 1);
    assertTrue(!rs.hasNext());
    s.createQuery("from Foo foo where foo.boolean = ?").setParameter(0, new Boolean(true), StandardBasicTypes.BOOLEAN).list();
    s.createQuery("select new Foo(fo.x) from Fo fo").list();
    s.createQuery("select new Foo(fo.integer) from Foo fo").list();
    list = s.createQuery("select new Foo(fo.x) from Foo fo").setCacheable(true).list();
    assertTrue(list.size() == 3);
    list = s.createQuery("select new Foo(fo.x) from Foo fo").setCacheable(true).list();
    assertTrue(list.size() == 3);
    rs = s.createQuery("select new Foo(fo.x) from Foo fo").iterate();
    assertTrue("projection iterate (results)", rs.hasNext());
    assertTrue("projection iterate (return check)", Foo.class.isAssignableFrom(rs.next().getClass()));
    ScrollableResults sr = s.createQuery("select new Foo(fo.x) from Foo fo").scroll();
    assertTrue("projection scroll (results)", sr.next());
    assertTrue("projection scroll (return check)", Foo.class.isAssignableFrom(sr.get(0).getClass()));
    list = s.createQuery("select foo.long, foo.component.name, foo, foo.foo from Foo foo").list();
    rs = list.iterator();
    int count = 0;
    while (rs.hasNext()) {
        count++;
        Object[] row = (Object[]) rs.next();
        assertTrue(row[0] instanceof Long);
        assertTrue(row[1] instanceof String);
        assertTrue(row[2] instanceof Foo);
        assertTrue(row[3] instanceof Foo);
    }
    assertTrue(count != 0);
    list = s.createQuery("select avg(foo.float), max(foo.component.name), count(distinct foo.id) from Foo foo").list();
    rs = list.iterator();
    count = 0;
    while (rs.hasNext()) {
        count++;
        Object[] row = (Object[]) rs.next();
        assertTrue(row[0] instanceof Double);
        assertTrue(row[1] instanceof String);
        assertTrue(row[2] instanceof Long);
    }
    assertTrue(count != 0);
    list = s.createQuery("select foo.long, foo.component, foo, foo.foo from Foo foo").list();
    rs = list.iterator();
    count = 0;
    while (rs.hasNext()) {
        count++;
        Object[] row = (Object[]) rs.next();
        assertTrue(row[0] instanceof Long);
        assertTrue(row[1] instanceof FooComponent);
        assertTrue(row[2] instanceof Foo);
        assertTrue(row[3] instanceof Foo);
    }
    assertTrue(count != 0);
    s.save(new Holder("ice T"));
    s.save(new Holder("ice cube"));
    assertTrue(s.createQuery("from java.lang.Object as o").list().size() == 15);
    assertTrue(s.createQuery("from Named").list().size() == 7);
    assertTrue(s.createQuery("from Named n where n.name is not null").list().size() == 4);
    iter = s.createQuery("from Named n").iterate();
    while (iter.hasNext()) {
        assertTrue(iter.next() instanceof Named);
    }
    s.save(new Holder("bar"));
    iter = s.createQuery("from Named n0, Named n1 where n0.name = n1.name").iterate();
    int cnt = 0;
    while (iter.hasNext()) {
        Object[] row = (Object[]) iter.next();
        if (row[0] != row[1])
            cnt++;
    }
    if (!(getDialect() instanceof HSQLDialect)) {
        assertTrue(cnt == 2);
        assertTrue(s.createQuery("from Named n0, Named n1 where n0.name = n1.name").list().size() == 7);
    }
    Query qu = s.createQuery("from Named n where n.name = :name");
    qu.getReturnTypes();
    qu.getNamedParameters();
    iter = s.createQuery("from java.lang.Object").iterate();
    int c = 0;
    while (iter.hasNext()) {
        iter.next();
        c++;
    }
    assertTrue(c == 16);
    s.createQuery("select baz.code, min(baz.count) from Baz baz group by baz.code").iterate();
    iter = s.createQuery("selecT baz from Baz baz where baz.stringDateMap['foo'] is not null or baz.stringDateMap['bar'] = ?").setParameter(0, new Date(), StandardBasicTypes.DATE).iterate();
    assertFalse(iter.hasNext());
    list = s.createQuery("select baz from Baz baz where baz.stringDateMap['now'] is not null").list();
    assertTrue(list.size() == 1);
    list = s.createQuery("select baz from Baz baz where baz.stringDateMap['now'] is not null and baz.stringDateMap['big bang'] < baz.stringDateMap['now']").list();
    assertTrue(list.size() == 1);
    list = s.createQuery("select index(date) from Baz baz join baz.stringDateMap date").list();
    System.out.println(list);
    assertTrue(list.size() == 2);
    s.createQuery("from Foo foo where foo.integer not between 1 and 5 and foo.string not in ('cde', 'abc') and foo.string is not null and foo.integer<=3").list();
    s.createQuery("from Baz baz inner join baz.collectionComponent.nested.foos foo where foo.string is null").list();
    if (!(getDialect() instanceof MySQLDialect) && !(getDialect() instanceof MckoiDialect) && !(getDialect() instanceof SAPDBDialect) && !(getDialect() instanceof PointbaseDialect)) {
        s.createQuery("from Baz baz inner join baz.fooSet where '1' in (from baz.fooSet foo where foo.string is not null)").list();
        s.createQuery("from Baz baz where 'a' in elements(baz.collectionComponent.nested.foos) and 1.0 in elements(baz.collectionComponent.nested.floats)").list();
        s.createQuery("from Baz baz where 'b' in elements(baz.collectionComponent.nested.foos) and 1.0 in elements(baz.collectionComponent.nested.floats)").list();
    }
    s.createQuery("from Foo foo join foo.foo where foo.foo in ('1','2','3')").list();
    if (!(getDialect() instanceof HSQLDialect))
        s.createQuery("from Foo foo left join foo.foo where foo.foo in ('1','2','3')").list();
    s.createQuery("select foo.foo from Foo foo where foo.foo in ('1','2','3')").list();
    s.createQuery("select foo.foo.string from Foo foo where foo.foo in ('1','2','3')").list();
    s.createQuery("select foo.foo.string from Foo foo where foo.foo.string in ('1','2','3')").list();
    s.createQuery("select foo.foo.long from Foo foo where foo.foo.string in ('1','2','3')").list();
    s.createQuery("select count(*) from Foo foo where foo.foo.string in ('1','2','3') or foo.foo.long in (1,2,3)").list();
    s.createQuery("select count(*) from Foo foo where foo.foo.string in ('1','2','3') group by foo.foo.long").list();
    s.createQuery("from Foo foo1 left join foo1.foo foo2 left join foo2.foo where foo1.string is not null").list();
    s.createQuery("from Foo foo1 left join foo1.foo.foo where foo1.string is not null").list();
    s.createQuery("from Foo foo1 left join foo1.foo foo2 left join foo1.foo.foo foo3 where foo1.string is not null").list();
    s.createQuery("select foo.formula from Foo foo where foo.formula > 0").list();
    int len = s.createQuery("from Foo as foo join foo.foo as foo2 where foo2.id >'a' or foo2.id <'a'").list().size();
    assertTrue(len == 2);
    for (Object entity : s.createQuery("from Holder").list()) {
        s.delete(entity);
    }
    txn.commit();
    s.close();
    s = openSession();
    txn = s.beginTransaction();
    baz = (Baz) s.createQuery("from Baz baz left outer join fetch baz.manyToAny").uniqueResult();
    assertTrue(Hibernate.isInitialized(baz.getManyToAny()));
    assertTrue(baz.getManyToAny().size() == 2);
    BarProxy barp = (BarProxy) baz.getManyToAny().get(0);
    s.createQuery("from Baz baz join baz.manyToAny").list();
    assertTrue(s.createQuery("select baz from Baz baz join baz.manyToAny a where index(a) = 0").list().size() == 1);
    FooProxy foop = (FooProxy) s.get(Foo.class, foo.getKey());
    assertTrue(foop == baz.getManyToAny().get(1));
    barp.setBaz(baz);
    assertTrue(s.createQuery("select bar from Bar bar where bar.baz.stringDateMap['now'] is not null").list().size() == 1);
    assertTrue(s.createQuery("select bar from Bar bar join bar.baz b where b.stringDateMap['big bang'] < b.stringDateMap['now'] and b.stringDateMap['now'] is not null").list().size() == 1);
    assertTrue(s.createQuery("select bar from Bar bar where bar.baz.stringDateMap['big bang'] < bar.baz.stringDateMap['now'] and bar.baz.stringDateMap['now'] is not null").list().size() == 1);
    list = s.createQuery("select foo.string, foo.component, foo.id from Bar foo").list();
    assertTrue(((FooComponent) ((Object[]) list.get(0))[1]).getName().equals("foo"));
    list = s.createQuery("select elements(baz.components) from Baz baz").list();
    assertTrue(list.size() == 2);
    list = s.createQuery("select bc.name from Baz baz join baz.components bc").list();
    assertTrue(list.size() == 2);
    //list = s.find("select bc from Baz baz join baz.components bc");
    s.createQuery("from Foo foo where foo.integer < 10 order by foo.string").setMaxResults(12).list();
    s.delete(barp);
    s.delete(baz);
    s.delete(foop.getFoo());
    s.delete(foop);
    txn.commit();
    s.close();
}
Also used : TimesTenDialect(org.hibernate.dialect.TimesTenDialect) Query(org.hibernate.Query) ArrayList(java.util.ArrayList) SybaseDialect(org.hibernate.dialect.SybaseDialect) MySQLDialect(org.hibernate.dialect.MySQLDialect) JoinedIterator(org.hibernate.internal.util.collections.JoinedIterator) Iterator(java.util.Iterator) TeradataDialect(org.hibernate.dialect.TeradataDialect) List(java.util.List) ArrayList(java.util.ArrayList) ScrollableResults(org.hibernate.ScrollableResults) HSQLDialect(org.hibernate.dialect.HSQLDialect) MckoiDialect(org.hibernate.dialect.MckoiDialect) DerbyDialect(org.hibernate.dialect.DerbyDialect) InterbaseDialect(org.hibernate.dialect.InterbaseDialect) PointbaseDialect(org.hibernate.dialect.PointbaseDialect) DB2Dialect(org.hibernate.dialect.DB2Dialect) Date(java.util.Date) SAPDBDialect(org.hibernate.dialect.SAPDBDialect) Transaction(org.hibernate.Transaction) Session(org.hibernate.Session) Test(org.junit.Test)

Aggregations

Session (org.hibernate.Session)7 HSQLDialect (org.hibernate.dialect.HSQLDialect)7 MySQLDialect (org.hibernate.dialect.MySQLDialect)7 PointbaseDialect (org.hibernate.dialect.PointbaseDialect)7 Test (org.junit.Test)7 Transaction (org.hibernate.Transaction)5 SAPDBDialect (org.hibernate.dialect.SAPDBDialect)5 Iterator (java.util.Iterator)4 JoinedIterator (org.hibernate.internal.util.collections.JoinedIterator)4 ArrayList (java.util.ArrayList)3 List (java.util.List)3 TimesTenDialect (org.hibernate.dialect.TimesTenDialect)3 DB2Dialect (org.hibernate.dialect.DB2Dialect)2 InterbaseDialect (org.hibernate.dialect.InterbaseDialect)2 MckoiDialect (org.hibernate.dialect.MckoiDialect)2 SybaseDialect (org.hibernate.dialect.SybaseDialect)2 Serializable (java.io.Serializable)1 Connection (java.sql.Connection)1 SQLException (java.sql.SQLException)1 Statement (java.sql.Statement)1