Search in sources :

Example 1 with SpaceShip

use of org.hibernate.test.sql.hand.SpaceShip in project hibernate-orm by hibernate.

the class NativeSQLQueriesTest method testAutoDetectAliasing.

@Test
@SuppressWarnings({ "UnusedDeclaration", "deprecation", "UnusedAssignment" })
public void testAutoDetectAliasing() {
    Session s = openSession();
    Transaction t = s.beginTransaction();
    Organization ifa = new Organization("IFA");
    Organization jboss = new Organization("JBoss");
    Person gavin = new Person("Gavin");
    Employment emp = new Employment(gavin, jboss, "AU");
    Serializable orgId = s.save(jboss);
    Serializable orgId2 = s.save(ifa);
    s.save(gavin);
    s.save(emp);
    t.commit();
    s.close();
    s = openSession();
    t = s.beginTransaction();
    List list = s.createSQLQuery(getEmploymentSQL()).addEntity(Employment.class.getName()).list();
    assertEquals(1, list.size());
    Employment emp2 = (Employment) list.get(0);
    assertEquals(emp2.getEmploymentId(), emp.getEmploymentId());
    assertEquals(emp2.getStartDate().getDate(), emp.getStartDate().getDate());
    assertEquals(emp2.getEndDate(), emp.getEndDate());
    s.clear();
    list = s.createSQLQuery(getEmploymentSQL()).addEntity(Employment.class.getName()).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP).list();
    assertEquals(1, list.size());
    Map m = (Map) list.get(0);
    assertTrue(m.containsKey("Employment"));
    assertEquals(1, m.size());
    list = s.createSQLQuery(getEmploymentSQL()).list();
    assertEquals(1, list.size());
    Object[] o = (Object[]) list.get(0);
    assertEquals(8, o.length);
    list = s.createSQLQuery(getEmploymentSQL()).setResultTransformer(new UpperCasedAliasToEntityMapResultTransformer()).list();
    assertEquals(1, list.size());
    m = (Map) list.get(0);
    assertTrue(m.containsKey("EMPID"));
    assertTrue(m.containsKey("AMOUNT"));
    assertTrue(m.containsKey("ENDDATE"));
    assertEquals(8, m.size());
    list = s.createSQLQuery(getEmploymentSQLMixedScalarEntity()).addScalar("employerid").addEntity(Employment.class).list();
    assertEquals(1, list.size());
    o = (Object[]) list.get(0);
    assertEquals(2, o.length);
    assertClassAssignability(Number.class, o[0].getClass());
    assertClassAssignability(Employment.class, o[1].getClass());
    Query queryWithCollection = s.getNamedQuery("organizationEmploymentsExplicitAliases");
    queryWithCollection.setLong("id", jboss.getId());
    list = queryWithCollection.list();
    assertEquals(list.size(), 1);
    s.clear();
    list = s.createSQLQuery(getOrganizationJoinEmploymentSQL()).addEntity("org", Organization.class).addJoin("emp", "org.employments").list();
    assertEquals(2, list.size());
    s.clear();
    list = s.createSQLQuery(getOrganizationFetchJoinEmploymentSQL()).addEntity("org", Organization.class).addJoin("emp", "org.employments").list();
    assertEquals(2, list.size());
    s.clear();
    // TODO : why twice?
    s.getNamedQuery("organizationreturnproperty").list();
    list = s.getNamedQuery("organizationreturnproperty").list();
    assertEquals(2, list.size());
    s.clear();
    list = s.getNamedQuery("organizationautodetect").list();
    assertEquals(2, list.size());
    t.commit();
    s.close();
    s = openSession();
    t = s.beginTransaction();
    s.delete(emp2);
    s.delete(jboss);
    s.delete(gavin);
    s.delete(ifa);
    t.commit();
    s.close();
    s = openSession();
    t = s.beginTransaction();
    Dimension dim = new Dimension(3, 30);
    s.save(dim);
    list = s.createSQLQuery("select d_len * d_width as surface, d_len * d_width * 10 as volume from Dimension").list();
    s.delete(dim);
    t.commit();
    s.close();
    s = openSession();
    t = s.beginTransaction();
    SpaceShip enterprise = new SpaceShip();
    enterprise.setModel("USS");
    enterprise.setName("Entreprise");
    enterprise.setSpeed(50d);
    Dimension d = new Dimension(45, 10);
    enterprise.setDimensions(d);
    s.save(enterprise);
    Object[] result = (Object[]) s.getNamedQuery("spaceship").uniqueResult();
    assertEquals("expecting 3 result values", 3, result.length);
    enterprise = (SpaceShip) result[0];
    assertTrue(50d == enterprise.getSpeed());
    assertTrue(450d == extractDoubleValue(result[1]));
    assertTrue(4500d == extractDoubleValue(result[2]));
    s.delete(enterprise);
    t.commit();
    s.close();
}
Also used : Serializable(java.io.Serializable) Organization(org.hibernate.test.sql.hand.Organization) SQLQuery(org.hibernate.SQLQuery) Query(org.hibernate.Query) Dimension(org.hibernate.test.sql.hand.Dimension) Transaction(org.hibernate.Transaction) SpaceShip(org.hibernate.test.sql.hand.SpaceShip) Employment(org.hibernate.test.sql.hand.Employment) List(java.util.List) Person(org.hibernate.test.sql.hand.Person) Map(java.util.Map) HashMap(java.util.HashMap) Session(org.hibernate.Session) Test(org.junit.Test)

Aggregations

Serializable (java.io.Serializable)1 HashMap (java.util.HashMap)1 List (java.util.List)1 Map (java.util.Map)1 Query (org.hibernate.Query)1 SQLQuery (org.hibernate.SQLQuery)1 Session (org.hibernate.Session)1 Transaction (org.hibernate.Transaction)1 Dimension (org.hibernate.test.sql.hand.Dimension)1 Employment (org.hibernate.test.sql.hand.Employment)1 Organization (org.hibernate.test.sql.hand.Organization)1 Person (org.hibernate.test.sql.hand.Person)1 SpaceShip (org.hibernate.test.sql.hand.SpaceShip)1 Test (org.junit.Test)1