Search in sources :

Example 6 with PostgreSQL81Dialect

use of org.hibernate.dialect.PostgreSQL81Dialect 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 7 with PostgreSQL81Dialect

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

the class LikeTest method testLike.

@Test
public void testLike() {
    Session session = openSession();
    Transaction tx = session.beginTransaction();
    TestObject obj = new TestObject();
    String uniq = "uniq" + System.currentTimeMillis();
    obj.setText("XyZ " + uniq + " blablabla");
    session.save(obj);
    session.flush();
    tx.commit();
    session.close();
    String pattern = "XyZ " + uniq + "%";
    // retrieve object - case sensitive - works ok
    session = openSession();
    tx = session.beginTransaction();
    List objects = session.createCriteria(TestObject.class).add(Restrictions.like("text", pattern)).list();
    assertEquals(1, objects.size());
    session.clear();
    // retrieve object - case insensitive - works ok
    objects = session.createCriteria(TestObject.class).add(Restrictions.like("text", pattern).ignoreCase()).list();
    assertEquals(1, objects.size());
    session.clear();
    if (!(getDialect() instanceof MySQLDialect) && !(getDialect() instanceof PostgreSQLDialect) && !(getDialect() instanceof PostgreSQL81Dialect)) {
        // retrieve object - case insensitive via custom expression - works
        // ok
        objects = session.createCriteria(TestObject.class).add(StringExpression.stringExpression("text", pattern, true)).list();
        assertEquals(1, objects.size());
        session.clear();
        // retrieve object - case sensitive via custom expression - not
        // working
        objects = session.createCriteria(TestObject.class).add(StringExpression.stringExpression("text", pattern, false)).list();
        assertEquals(1, objects.size());
    }
    tx.rollback();
    session.close();
}
Also used : MySQLDialect(org.hibernate.dialect.MySQLDialect) PostgreSQLDialect(org.hibernate.dialect.PostgreSQLDialect) Transaction(org.hibernate.Transaction) List(java.util.List) Session(org.hibernate.Session) PostgreSQL81Dialect(org.hibernate.dialect.PostgreSQL81Dialect) Test(org.junit.Test)

Example 8 with PostgreSQL81Dialect

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

the class UseNationalizedCharDataSettingTest method testSetting.

@Test
@TestForIssue(jiraKey = "HHH-10528")
public void testSetting() {
    final StandardServiceRegistry ssr = new StandardServiceRegistryBuilder().applySetting(AvailableSettings.USE_NATIONALIZED_CHARACTER_DATA, true).build();
    try {
        final MetadataSources ms = new MetadataSources(ssr);
        ms.addAnnotatedClass(NationalizedBySettingEntity.class);
        final Metadata metadata = ms.buildMetadata();
        final PersistentClass pc = metadata.getEntityBinding(NationalizedBySettingEntity.class.getName());
        final Property nameAttribute = pc.getProperty("name");
        if (metadata.getDatabase().getDialect() instanceof PostgreSQL81Dialect) {
            // See issue HHH-10693
            assertSame(StringType.INSTANCE, nameAttribute.getType());
        } else {
            assertSame(StringNVarcharType.INSTANCE, nameAttribute.getType());
        }
    } finally {
        StandardServiceRegistryBuilder.destroy(ssr);
    }
}
Also used : StandardServiceRegistryBuilder(org.hibernate.boot.registry.StandardServiceRegistryBuilder) MetadataSources(org.hibernate.boot.MetadataSources) Metadata(org.hibernate.boot.Metadata) Property(org.hibernate.mapping.Property) StandardServiceRegistry(org.hibernate.boot.registry.StandardServiceRegistry) PersistentClass(org.hibernate.mapping.PersistentClass) PostgreSQL81Dialect(org.hibernate.dialect.PostgreSQL81Dialect) Test(org.junit.Test) TestForIssue(org.hibernate.testing.TestForIssue)

Example 9 with PostgreSQL81Dialect

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

the class UseNationalizedCharDataSettingTest method testSettingOnCharType.

@Test
@TestForIssue(jiraKey = "HHH-11205")
public void testSettingOnCharType() {
    final StandardServiceRegistry ssr = new StandardServiceRegistryBuilder().applySetting(AvailableSettings.USE_NATIONALIZED_CHARACTER_DATA, true).build();
    try {
        final MetadataSources ms = new MetadataSources(ssr);
        ms.addAnnotatedClass(NationalizedBySettingEntity.class);
        final Metadata metadata = ms.buildMetadata();
        final PersistentClass pc = metadata.getEntityBinding(NationalizedBySettingEntity.class.getName());
        final Property nameAttribute = pc.getProperty("flag");
        if (metadata.getDatabase().getDialect() instanceof PostgreSQL81Dialect) {
            assertSame(CharacterType.INSTANCE, nameAttribute.getType());
        } else {
            assertSame(CharacterNCharType.INSTANCE, nameAttribute.getType());
        }
    } finally {
        StandardServiceRegistryBuilder.destroy(ssr);
    }
}
Also used : StandardServiceRegistryBuilder(org.hibernate.boot.registry.StandardServiceRegistryBuilder) MetadataSources(org.hibernate.boot.MetadataSources) Metadata(org.hibernate.boot.Metadata) Property(org.hibernate.mapping.Property) StandardServiceRegistry(org.hibernate.boot.registry.StandardServiceRegistry) PersistentClass(org.hibernate.mapping.PersistentClass) PostgreSQL81Dialect(org.hibernate.dialect.PostgreSQL81Dialect) Test(org.junit.Test) TestForIssue(org.hibernate.testing.TestForIssue)

Example 10 with PostgreSQL81Dialect

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

the class FormulaJoinTest method testFormulaJoin.

@Test
public void testFormulaJoin() {
    Session s = openSession();
    Transaction tx = s.beginTransaction();
    Master master = new Master();
    master.setName("master 1");
    Detail current = new Detail();
    current.setCurrentVersion(true);
    current.setVersion(2);
    current.setDetails("details of master 1 blah blah");
    current.setMaster(master);
    master.setDetail(current);
    Detail past = new Detail();
    past.setCurrentVersion(false);
    past.setVersion(1);
    past.setDetails("old details of master 1 yada yada");
    past.setMaster(master);
    s.persist(master);
    s.persist(past);
    s.persist(current);
    tx.commit();
    s.close();
    if (getDialect() instanceof PostgreSQLDialect || getDialect() instanceof PostgreSQL81Dialect)
        return;
    s = openSession();
    tx = s.beginTransaction();
    List l = s.createQuery("from Master m left join m.detail d").list();
    assertEquals(l.size(), 1);
    tx.commit();
    s.close();
    s = openSession();
    tx = s.beginTransaction();
    l = s.createQuery("from Master m left join fetch m.detail").list();
    assertEquals(l.size(), 1);
    Master m = (Master) l.get(0);
    assertEquals("master 1", m.getDetail().getMaster().getName());
    assertTrue(m == m.getDetail().getMaster());
    tx.commit();
    s.close();
    s = openSession();
    tx = s.beginTransaction();
    l = s.createQuery("from Master m join fetch m.detail").list();
    assertEquals(l.size(), 1);
    tx.commit();
    s.close();
    s = openSession();
    tx = s.beginTransaction();
    l = s.createQuery("from Detail d join fetch d.currentMaster.master").list();
    assertEquals(l.size(), 2);
    tx.commit();
    s.close();
    s = openSession();
    tx = s.beginTransaction();
    l = s.createQuery("from Detail d join fetch d.currentMaster.master m join fetch m.detail").list();
    assertEquals(l.size(), 2);
    s.createQuery("delete from Detail").executeUpdate();
    s.createQuery("delete from Master").executeUpdate();
    tx.commit();
    s.close();
}
Also used : PostgreSQLDialect(org.hibernate.dialect.PostgreSQLDialect) Transaction(org.hibernate.Transaction) List(java.util.List) Session(org.hibernate.Session) PostgreSQL81Dialect(org.hibernate.dialect.PostgreSQL81Dialect) Test(org.junit.Test)

Aggregations

PostgreSQL81Dialect (org.hibernate.dialect.PostgreSQL81Dialect)11 Test (org.junit.Test)9 PostgreSQLDialect (org.hibernate.dialect.PostgreSQLDialect)6 Session (org.hibernate.Session)5 Transaction (org.hibernate.Transaction)4 Metadata (org.hibernate.boot.Metadata)4 MetadataSources (org.hibernate.boot.MetadataSources)4 StandardServiceRegistry (org.hibernate.boot.registry.StandardServiceRegistry)4 StandardServiceRegistryBuilder (org.hibernate.boot.registry.StandardServiceRegistryBuilder)4 DB2Dialect (org.hibernate.dialect.DB2Dialect)4 HSQLDialect (org.hibernate.dialect.HSQLDialect)4 MySQLDialect (org.hibernate.dialect.MySQLDialect)4 List (java.util.List)3 PersistentClass (org.hibernate.mapping.PersistentClass)3 TestForIssue (org.hibernate.testing.TestForIssue)3 AbstractHANADialect (org.hibernate.dialect.AbstractHANADialect)2 Oracle8iDialect (org.hibernate.dialect.Oracle8iDialect)2 Property (org.hibernate.mapping.Property)2 ArrayList (java.util.ArrayList)1 Iterator (java.util.Iterator)1