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();
}
Aggregations