generaltest.java
来自「好东西,hibernate-3.2.0,他是一开元的树杖hibernate-3.」· Java 代码 · 共 569 行 · 第 1/2 页
JAVA
569 行
package org.hibernate.test.sql;
import java.io.Serializable;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.math.BigInteger;
import java.math.BigDecimal;
import junit.framework.Test;
import junit.framework.TestSuite;
import org.hibernate.Hibernate;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.test.TestCase;
import org.hibernate.transform.DistinctRootEntityResultTransformer;
import org.hibernate.transform.Transformers;
/**
* @author Steve Ebersole
*/
public class GeneralTest extends TestCase {
public GeneralTest(String x) {
super( x );
}
protected String getOrganizationFetchJoinEmploymentSQL() {
return "SELECT org.ORGID as {org.id}, " +
" org.NAME as {org.name}, " +
" emp.EMPLOYER as {emp.key}, " +
" emp.EMPID as {emp.element}, " +
" {emp.element.*} " +
"FROM ORGANIZATION org " +
" LEFT OUTER JOIN EMPLOYMENT emp ON org.ORGID = emp.EMPLOYER";
}
protected String getOrganizationJoinEmploymentSQL() {
return "SELECT org.ORGID as {org.id}, " +
" org.NAME as {org.name}, " +
" {emp.*} " +
"FROM ORGANIZATION org " +
" LEFT OUTER JOIN EMPLOYMENT emp ON org.ORGID = emp.EMPLOYER";
}
protected String getEmploymentSQL() {
return "SELECT * FROM EMPLOYMENT";
}
protected String getEmploymentSQLMixedScalarEntity() {
return "SELECT e.*, e.employer as employerid FROM EMPLOYMENT e" ;
}
protected String getOrgEmpRegionSQL() {
return "select {org.*}, {emp.*}, emp.REGIONCODE " +
"from ORGANIZATION org " +
" left outer join EMPLOYMENT emp on org.ORGID = emp.EMPLOYER";
}
protected String getOrgEmpPersonSQL() {
return "select {org.*}, {emp.*}, {pers.*} " +
"from ORGANIZATION org " +
" join EMPLOYMENT emp on org.ORGID = emp.EMPLOYER " +
" join PERSON pers on pers.PERID = emp.EMPLOYEE ";
}
protected String[] getMappings() {
return new String[] { "sql/General.hbm.xml" };
}
public void testFailOnNoAddEntityOrScalar() {
// Note: this passes, but for the wrong reason.
// there is actually an exception thrown, but it is the database
// throwing a sql exception because the SQL gets passed
// "un-processed"...
Session s = openSession();
try {
String sql = "select {org.*} " +
"from organization org";
s.createSQLQuery( sql ).list();
fail( "Should throw an exception since no addEntity nor addScalar has been performed." );
}
catch( HibernateException he) {
// expected behavior
}
finally {
s.close();
}
}
public void testSQLQueryInterface() {
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");
s.persist(ifa);
s.persist(jboss);
s.persist(gavin);
s.persist(emp);
List l = s.createSQLQuery( getOrgEmpRegionSQL() )
.addEntity("org", Organization.class)
.addJoin("emp", "org.employments")
.addScalar("regionCode", Hibernate.STRING)
.list();
assertEquals( 2, l.size() );
l = s.createSQLQuery( getOrgEmpPersonSQL() )
.addEntity("org", Organization.class)
.addJoin("emp", "org.employments")
.addJoin("pers", "emp.employee")
.list();
assertEquals( l.size(), 1 );
t.commit();
s.close();
s = openSession();
t = s.beginTransaction();
l = s.createSQLQuery( "select {org.*}, {emp.*} " +
"from ORGANIZATION org " +
" left outer join EMPLOYMENT emp on org.ORGID = emp.EMPLOYER, ORGANIZATION org2" )
.addEntity("org", Organization.class)
.addJoin("emp", "org.employments")
.setResultTransformer(new DistinctRootEntityResultTransformer())
.list();
assertEquals( l.size(), 2 );
t.commit();
s.close();
s = openSession();
t = s.beginTransaction();
s.delete(emp);
s.delete(gavin);
s.delete(ifa);
s.delete(jboss);
t.commit();
s.close();
}
public void testResultSetMappingDefinition() {
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");
s.persist(ifa);
s.persist(jboss);
s.persist(gavin);
s.persist(emp);
List l = s.createSQLQuery( getOrgEmpRegionSQL() )
.setResultSetMapping( "org-emp-regionCode" )
.list();
assertEquals( l.size(), 2 );
l = s.createSQLQuery( getOrgEmpPersonSQL() )
.setResultSetMapping( "org-emp-person" )
.list();
assertEquals( l.size(), 1 );
s.delete(emp);
s.delete(gavin);
s.delete(ifa);
s.delete(jboss);
t.commit();
s.close();
}
public void testScalarValues() throws Exception {
Session s = openSession();
Transaction t = s.beginTransaction();
Organization ifa = new Organization( "IFA" );
Organization jboss = new Organization( "JBoss" );
Serializable idIfa = s.save( ifa );
Serializable idJBoss = s.save( jboss );
s.flush();
List result = s.getNamedQuery( "orgNamesOnly" ).list();
assertTrue( result.contains( "IFA" ) );
assertTrue( result.contains( "JBoss" ) );
result = s.getNamedQuery( "orgNamesOnly" ).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP).list();
Map m = (Map) result.get(0);
assertEquals( 2, result.size() );
assertEquals( 1, m.size() );
assertTrue( m.containsKey("NAME") );
t.commit();
s.close();
s = openSession();
t = s.beginTransaction();
Iterator iter = s.getNamedQuery( "orgNamesAndOrgs" ).list().iterator();
Object[] o = ( Object[] ) iter.next();
assertEquals( o[0], "IFA" );
assertEquals( ( ( Organization ) o[1] ).getName(), "IFA" );
o = ( Object[] ) iter.next();
assertEquals( o[0], "JBoss" );
assertEquals( ( ( Organization ) o[1] ).getName(), "JBoss" );
t.commit();
s.close();
s = openSession();
t = s.beginTransaction();
// test that the ordering of the results is truly based on the order in which they were defined
iter = s.getNamedQuery( "orgsAndOrgNames" ).list().iterator();
Object[] row = ( Object[] ) iter.next();
assertEquals( "expecting non-scalar result first", Organization.class, row[0].getClass() );
assertEquals( "expecting scalar result second", String.class, row[1].getClass() );
assertEquals( ( ( Organization ) row[0] ).getName(), "IFA" );
assertEquals( row[1], "IFA" );
row = ( Object[] ) iter.next();
assertEquals( "expecting non-scalar result first", Organization.class, row[0].getClass() );
assertEquals( "expecting scalar result second", String.class, row[1].getClass() );
assertEquals( ( ( Organization ) row[0] ).getName(), "JBoss" );
assertEquals( row[1], "JBoss" );
assertFalse( iter.hasNext() );
t.commit();
s.close();
s = openSession();
t = s.beginTransaction();
iter = s.getNamedQuery( "orgIdsAndOrgNames" ).list().iterator();
o = ( Object[] ) iter.next();
assertEquals( o[1], "IFA" );
assertEquals( o[0], idIfa );
o = ( Object[] ) iter.next();
assertEquals( o[1], "JBoss" );
assertEquals( o[0], idJBoss );
s.delete( ifa );
s.delete( jboss );
t.commit();
s.close();
}
public void testMappedAliasStrategy() {
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();
Query namedQuery = s.getNamedQuery("AllEmploymentAsMapped");
List list = namedQuery.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() );
t.commit();
s.close();
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?