From: <max...@us...> - 2006-02-09 17:26:58
|
Update of /cvsroot/hibernate/Hibernate3/test/org/hibernate/test/sql In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11564/test/org/hibernate/test/sql Modified Files: MSSQLTest.java GeneralTest.java HandSQLTest.java OracleSQLTest.java MSSQLEmployment.hbm.xml OracleEmployment.hbm.xml MySQLEmployment.hbm.xml General.hbm.xml Log Message: cleaned up hand sql tests so the general and portable code is run on all databases and only the truly db specific test cases are limited to specific dbs (such as stored procedures and custom sql) Index: MSSQLTest.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate3/test/org/hibernate/test/sql/MSSQLTest.java,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -r1.9 -r1.10 --- MSSQLTest.java 10 Jan 2006 23:04:27 -0000 1.9 +++ MSSQLTest.java 9 Feb 2006 17:26:47 -0000 1.10 @@ -1,26 +1,11 @@ //$Id$ package org.hibernate.test.sql; -import java.io.Serializable; -import java.sql.SQLException; -import java.util.Date; -import java.util.Iterator; -import java.util.List; - import junit.framework.Test; import junit.framework.TestSuite; -import org.hibernate.Hibernate; -import org.hibernate.HibernateException; -import org.hibernate.LockMode; -import org.hibernate.Query; -import org.hibernate.Session; -import org.hibernate.Transaction; -import org.hibernate.dialect.DB2Dialect; -import org.hibernate.dialect.MySQLDialect; -import org.hibernate.dialect.SybaseDialect; import org.hibernate.dialect.Dialect; -import org.hibernate.test.TestCase; +import org.hibernate.dialect.SybaseDialect; /** * @author Gavin King @@ -42,6 +27,5 @@ public boolean appliesTo(Dialect dialect) { return ( dialect instanceof SybaseDialect ); } - } Index: GeneralTest.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate3/test/org/hibernate/test/sql/GeneralTest.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- GeneralTest.java 10 Jan 2006 23:04:27 -0000 1.1 +++ GeneralTest.java 9 Feb 2006 17:26:48 -0000 1.2 @@ -1,8 +1,15 @@ package org.hibernate.test.sql; +import java.io.Serializable; +import java.util.Iterator; +import java.util.List; + import org.hibernate.test.TestCase; +import org.hibernate.Hibernate; +import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.HibernateException; +import org.hibernate.Transaction; /** * @author Steve Ebersole @@ -15,6 +22,42 @@ 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 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" }; } @@ -38,4 +81,304 @@ 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(); +// List l = s.createSQLQuery("select {org.*}, {emp.*}, emp.regionCode from organization org left outer join employment emp on org.orgid = emp.employer") +// .addEntity("org", Organization.class) +// .addJoin("emp", "org.employments") +// .addScalar("regionCode", Hibernate.STRING) +// .list(); + assertEquals( l.size(), 2 ); + + l = s.createSQLQuery( getOrgEmpPersonSQL() ) + .addEntity("org", Organization.class) + .addJoin("emp", "org.employments") + .addJoin("pers", "emp.employee") + .list(); +// l = s.createSQLQuery("select {org.*}, {emp.*}, {pers.*} from organization org join employment emp on org.orgid = emp.employer join person pers on pers.perid = emp.employee") +// .addEntity("org", Organization.class) +// .addJoin("emp", "org.employments") +// .addJoin("pers", "emp.employee") +// .list(); + assertEquals( l.size(), 1 ); + + 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(); +// List l = s.createSQLQuery("select {org.*}, {emp.*}, emp.regionCode from organization org left outer join employment emp on org.orgid = emp.employer") +// .setResultSetMapping( "org-emp-regionCode") +// .list(); + assertEquals( l.size(), 2 ); + + l = s.createSQLQuery( getOrgEmpPersonSQL() ) + .setResultSetMapping( "org-emp-person" ) + .list(); +// l = s.createSQLQuery("select {org.*}, {emp.*}, {pers.*} from organization org join employment emp on org.orgid = emp.employer join person pers on pers.perid = emp.employee") +// .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" ) ); + + 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(); + + iter = s.getNamedQuery( "orgsAndOrgNames" ).list().iterator(); + 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(); + + 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(); + + s = openSession(); + t = s.beginTransaction(); + namedQuery = s.getNamedQuery("EmploymentAndPerson"); + list = namedQuery.list(); + assertEquals(1,list.size() ); + Object[] objs = (Object[]) list.get(0); + assertEquals(2, objs.length); + emp2 = (Employment) objs[0]; + gavin = (Person) objs[1]; + s.delete(emp2); + s.delete(jboss); + s.delete(gavin); + s.delete(ifa); + t.commit(); + s.close(); + } + + 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(); +// Query namedQuery = s.createSQLQuery("SELECT * FROM EMPLOYMENT").addEntity( Employment.class.getName() ); +// 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() ); + + s.clear(); + + 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(); +// Query queryWithJoin = s.createSQLQuery( +// "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 ") +// .addEntity("org", Organization.class).addJoin("emp", "org.employments"); +// +// queryWithJoin.list(); +// list = queryWithJoin.list(); + assertEquals( 2,list.size() ); + + s.clear(); + + list = s.createSQLQuery( getOrganizationFetchJoinEmploymentSQL() ) + .addEntity( "org", Organization.class ) + .addJoin( "emp", "org.employments" ) + .list(); +// queryWithJoin = s.createSQLQuery( +// "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 ") +// .addEntity("org", Organization.class).addJoin("emp", "org.employments"); +// +// list = queryWithJoin.list(); +// assertEquals( 2,list.size() ); +// +// s.clear(); +// +// queryWithJoin = s.createSQLQuery( +// "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 ") +// .addEntity("org", Organization.class).addJoin("emp", "org.employments"); +// +// list = queryWithJoin.list(); + assertEquals( 2,list.size() ); + + s.clear(); + + // TODO : why twice? + s.getNamedQuery( "organizationreturnproperty" ).list(); + list = s.getNamedQuery( "organizationreturnproperty" ).list(); +// queryWithJoin = s.getNamedQuery("organizationreturnproperty"); +// queryWithJoin.list(); +// +// list = queryWithJoin.list(); + assertEquals( 2,list.size() ); + + s.clear(); + + list = s.getNamedQuery( "organizationautodetect" ).list(); +// queryWithJoin = s.getNamedQuery("organizationautodetect"); +// queryWithJoin.list(); +// +// list = queryWithJoin.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(); + + } + + + } Index: HandSQLTest.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate3/test/org/hibernate/test/sql/HandSQLTest.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- HandSQLTest.java 10 Jan 2006 23:04:27 -0000 1.1 +++ HandSQLTest.java 9 Feb 2006 17:26:48 -0000 1.2 @@ -27,41 +27,6 @@ return null; } - 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 getEmploymentSQL() { - return "SELECT * FROM EMPLOYMENT"; - } - - 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 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"; - } - public void testHandSQL() { Session s = openSession(); Transaction t = s.beginTransaction(); @@ -124,153 +89,6 @@ 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(); -// List l = s.createSQLQuery("select {org.*}, {emp.*}, emp.regionCode from organization org left outer join employment emp on org.orgid = emp.employer") -// .addEntity("org", Organization.class) -// .addJoin("emp", "org.employments") -// .addScalar("regionCode", Hibernate.STRING) -// .list(); - assertEquals( l.size(), 2 ); - - l = s.createSQLQuery( getOrgEmpPersonSQL() ) - .addEntity("org", Organization.class) - .addJoin("emp", "org.employments") - .addJoin("pers", "emp.employee") - .list(); -// l = s.createSQLQuery("select {org.*}, {emp.*}, {pers.*} from organization org join employment emp on org.orgid = emp.employer join person pers on pers.perid = emp.employee") -// .addEntity("org", Organization.class) -// .addJoin("emp", "org.employments") -// .addJoin("pers", "emp.employee") -// .list(); - assertEquals( l.size(), 1 ); - - 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(); -// List l = s.createSQLQuery("select {org.*}, {emp.*}, emp.regionCode from organization org left outer join employment emp on org.orgid = emp.employer") -// .setResultSetMapping( "org-emp-regionCode") -// .list(); - assertEquals( l.size(), 2 ); - - l = s.createSQLQuery( getOrgEmpPersonSQL() ) - .setResultSetMapping( "org-emp-person" ) - .list(); -// l = s.createSQLQuery("select {org.*}, {emp.*}, {pers.*} from organization org join employment emp on org.orgid = emp.employer join person pers on pers.perid = emp.employee") -// .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" ) ); - - 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(); - - iter = s.getNamedQuery( "orgsAndOrgNames" ).list().iterator(); - 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(); - - 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 testScalarStoredProcedure() throws HibernateException, SQLException { Session s = openSession(); @@ -329,155 +147,5 @@ 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(); - - s = openSession(); - t = s.beginTransaction(); - namedQuery = s.getNamedQuery("EmploymentAndPerson"); - list = namedQuery.list(); - assertEquals(1,list.size() ); - Object[] objs = (Object[]) list.get(0); - assertEquals(2, objs.length); - emp2 = (Employment) objs[0]; - gavin = (Person) objs[1]; - s.delete(emp2); - s.delete(jboss); - s.delete(gavin); - s.delete(ifa); - t.commit(); - s.close(); - } - - 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(); -// Query namedQuery = s.createSQLQuery("SELECT * FROM EMPLOYMENT").addEntity( Employment.class.getName() ); -// 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() ); - - s.clear(); - - 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(); -// Query queryWithJoin = s.createSQLQuery( -// "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 ") -// .addEntity("org", Organization.class).addJoin("emp", "org.employments"); -// -// queryWithJoin.list(); -// list = queryWithJoin.list(); - assertEquals( 2,list.size() ); - - s.clear(); - - list = s.createSQLQuery( getOrganizationFetchJoinEmploymentSQL() ) - .addEntity( "org", Organization.class ) - .addJoin( "emp", "org.employments" ) - .list(); -// queryWithJoin = s.createSQLQuery( -// "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 ") -// .addEntity("org", Organization.class).addJoin("emp", "org.employments"); -// -// list = queryWithJoin.list(); -// assertEquals( 2,list.size() ); -// -// s.clear(); -// -// queryWithJoin = s.createSQLQuery( -// "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 ") -// .addEntity("org", Organization.class).addJoin("emp", "org.employments"); -// -// list = queryWithJoin.list(); - assertEquals( 2,list.size() ); - - s.clear(); - - // TODO : why twice? - s.getNamedQuery( "organizationreturnproperty" ).list(); - list = s.getNamedQuery( "organizationreturnproperty" ).list(); -// queryWithJoin = s.getNamedQuery("organizationreturnproperty"); -// queryWithJoin.list(); -// -// list = queryWithJoin.list(); - assertEquals( 2,list.size() ); - - s.clear(); - - // TODO : why twice? - s.getNamedQuery( "organizationautodetect" ).list(); - list = s.getNamedQuery( "organizationautodetect" ).list(); -// queryWithJoin = s.getNamedQuery("organizationautodetect"); -// queryWithJoin.list(); -// -// list = queryWithJoin.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(); - - } } Index: OracleSQLTest.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate3/test/org/hibernate/test/sql/OracleSQLTest.java,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -r1.9 -r1.10 --- OracleSQLTest.java 10 Jan 2006 23:04:27 -0000 1.9 +++ OracleSQLTest.java 9 Feb 2006 17:26:48 -0000 1.10 @@ -4,8 +4,8 @@ import junit.framework.Test; import junit.framework.TestSuite; -import org.hibernate.dialect.Oracle9Dialect; import org.hibernate.dialect.Dialect; +import org.hibernate.dialect.Oracle9Dialect; /** * @author Gavin King Index: MSSQLEmployment.hbm.xml =================================================================== RCS file: /cvsroot/hibernate/Hibernate3/test/org/hibernate/test/sql/MSSQLEmployment.hbm.xml,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- MSSQLEmployment.hbm.xml 10 Jan 2006 23:04:27 -0000 1.4 +++ MSSQLEmployment.hbm.xml 9 Feb 2006 17:26:49 -0000 1.5 @@ -10,7 +10,6 @@ This version is for Sybase/mssql --> - <hibernate-mapping package="org.hibernate.test.sql" default-access="field"> @@ -95,38 +94,6 @@ WHERE org.ORGID=? </sql-query> - <sql-query name="organizationreturnproperty"> - <return alias="org" class="Organization"> - <return-property name="id" column="orgid"/> - <return-property name="name" column="name"/> - </return> - <return-join alias="emp" property="org.employments"> - <return-property name="key" column="employer"/> - <return-property name="element" column="empid"/> - <return-property name="element.employee" column="EMPLOYEE"/> - <return-property name="element.employer" column="EMPLOYER"/> - <return-property name="element.startDate" column="XSTARTDATE"/> - <return-property name="element.endDate" column="ENDDATE"/> - <return-property name="element.regionCode" column="REGIONCODE"/> - <return-property name="element.employmentId" column="EMPID"/> - <return-property name="element.salary"> - <return-column name="VALUE"/> - <return-column name="CURRENCY"/> - </return-property> - </return-join> - SELECT org.orgid as orgid, org.name as name, emp.employer as employer, emp.empid as empid, emp.employee as employee, emp.employer as employer, emp.startDate as xstartDate, emp.endDate as endDate, emp.regionCode as regionCode, emp.VALUE as VALUE, emp.CURRENCY as CURRENCY - FROM ORGANIZATION org - LEFT OUTER JOIN EMPLOYMENT emp ON org.ORGID = emp.EMPLOYER - </sql-query> - - <sql-query name="organizationautodetect"> - <!-- equal to "organizationpropertyreturn" but since no {} nor return-property are used hibernate will fallback to use the columns directly from the mapping --> - <return alias="org" class="Organization"/> - <return-join alias="emp" property="org.employments"/> - SELECT org.orgid as orgid, org.name as name, emp.employer as employer, emp.empid as empid, emp.employee as employee, emp.employer as employer, emp.startDate as startDate, emp.endDate as endDate, emp.regionCode as regionCode, emp.VALUE as VALUE, emp.CURRENCY as CURRENCY - FROM ORGANIZATION org - LEFT OUTER JOIN EMPLOYMENT emp ON org.ORGID = emp.EMPLOYER - </sql-query> <!--sql-query name="organization"> <return alias="org" class="Organization"/> @@ -141,34 +108,9 @@ INNER JOIN EMPLOYMENT e ON e.EMPLOYER = org.ORGID </sql-query> - <sql-query name="orgNamesOnly"> - <return-scalar column="NAME"/> - SELECT org.NAME FROM ORGANIZATION org - </sql-query> - <sql-query name="orgNamesAndOrgs"> - <return-scalar column="thename" type="string"/> - <return alias="org" class="Organization"/> - SELECT org.NAME AS thename, org.NAME AS {org.name}, org.ORGID AS {org.id} - FROM ORGANIZATION org - ORDER BY thename - </sql-query> - <sql-query name="orgsAndOrgNames"> - <return alias="org" class="Organization"/> - <return-scalar column="thename" type="string"/> - SELECT org.NAME AS thename, org.NAME AS {org.name}, org.ORGID AS {org.id} - FROM ORGANIZATION org - ORDER BY thename - </sql-query> - <sql-query name="orgIdsAndOrgNames"> - <return-scalar column="orgid" type="long"/> - <return-scalar column="thename" type="string"/> - SELECT NAME AS thename, ORGID AS orgid - FROM ORGANIZATION - ORDER BY thename - </sql-query> <sql-query name="employment"> <return alias="emp" class="Employment"/> @@ -179,17 +121,6 @@ WHERE EMPID = ? </sql-query> - <sql-query name="AllEmploymentAsMapped"> - <return class="Employment"/> - SELECT * FROM EMPLOYMENT - </sql-query> - - <sql-query name="EmploymentAndPerson"> - <return class="Employment"/> - <return class="Person"/> - SELECT * FROM Employment, Person - </sql-query> - <sql-query name="organizationEmployments"> <load-collection alias="empcol" role="Organization.employments"/> SELECT {empcol.*} @@ -198,13 +129,6 @@ ORDER BY STARTDATE ASC, EMPLOYEE ASC </sql-query> - <sql-query name="organizationEmploymentsExplicitAliases"> - <load-collection alias="empcol" role="Organization.employments"/> - SELECT empcol.employer as {empcol.key}, empcol.empid as {empcol.element}, {empcol.element.*} - FROM EMPLOYMENT empcol - WHERE EMPLOYER = :id - ORDER BY STARTDATE ASC, EMPLOYEE ASC - </sql-query> <sql-query name="organizationCurrentEmployments"> <return alias="emp" class="Employment"> Index: OracleEmployment.hbm.xml =================================================================== RCS file: /cvsroot/hibernate/Hibernate3/test/org/hibernate/test/sql/OracleEmployment.hbm.xml,v retrieving revision 1.18 retrieving revision 1.19 diff -u -d -r1.18 -r1.19 --- OracleEmployment.hbm.xml 10 Jan 2006 23:04:27 -0000 1.18 +++ OracleEmployment.hbm.xml 9 Feb 2006 17:26:49 -0000 1.19 @@ -11,7 +11,6 @@ This version is for Oracle --> - <hibernate-mapping package="org.hibernate.test.sql" default-access="field"> @@ -21,7 +20,7 @@ <generator class="increment"/> </id> <property name="name" not-null="true"/> - <set lazy="true" name="employments" + <set name="employments" inverse="true" order-by="DUMMY"> <key column="employer"/> <!-- only needed for DDL generation --> @@ -29,7 +28,7 @@ <loader query-ref="organizationEmployments"/> </set> <!-- query-list name="currentEmployments" - query-ref="organizationCurrentEmployments"/--> + query-ref="organizationCurrentEmployments"--> <loader query-ref="organization"/> <sql-insert>INSERT INTO ORGANIZATION (NAME, ORGID) VALUES ( UPPER(?), ? )</sql-insert> <sql-update>UPDATE ORGANIZATION SET NAME=UPPER(?) WHERE ORGID=?</sql-update> @@ -82,57 +81,21 @@ <return-join alias="pers" property="emp.employee"/> </resultset> - <resultset name="org-description"> - <return alias="org" class="Organization"/> - <return-join alias="emp" property="org.employments"/> - </resultset> - <sql-query name="person"> <return alias="p" class="Person" lock-mode="upgrade"/> SELECT NAME AS {p.name}, PERID AS {p.id} FROM PERSON WHERE PERID=? /*FOR UPDATE*/ </sql-query> - <sql-query name="organization" resultset-ref="org-description"> - <!-- return alias="org" class="Organization"/> - <return-join alias="emp" property="org.employments"/ --> + <sql-query name="organization"> + <return alias="org" class="Organization"/> + <return-join alias="emp" property="org.employments"/> SELECT {org.*}, {emp.*} FROM ORGANIZATION org LEFT OUTER JOIN EMPLOYMENT emp ON org.ORGID = emp.EMPLOYER WHERE org.ORGID=? </sql-query> - <sql-query name="organizationreturnproperty"> - <return alias="org" class="Organization"> - <return-property name="id" column="orgid"/> - <return-property name="name" column="name"/> - </return> - <return-join alias="emp" property="org.employments"> - <return-property name="key" column="employer"/> - <return-property name="element" column="empid"/> - <return-property name="element.employee" column="EMPLOYEE"/> - <return-property name="element.employer" column="EMPLOYER"/> - <return-property name="element.startDate" column="XSTARTDATE"/> - <return-property name="element.endDate" column="ENDDATE"/> - <return-property name="element.regionCode" column="REGIONCODE"/> - <return-property name="element.employmentId" column="EMPID"/> - <return-property name="element.salary"> - <return-column name="VALUE"/> - <return-column name="CURRENCY"/> - </return-property> - </return-join> - SELECT org.orgid as orgid, org.name as name, emp.employer as employer, emp.empid as empid, emp.employee as employee, emp.employer as employer, emp.startDate as xstartDate, emp.endDate as endDate, emp.regionCode as regionCode, emp.VALUE as VALUE, emp.CURRENCY as CURRENCY - FROM ORGANIZATION org - LEFT OUTER JOIN EMPLOYMENT emp ON org.ORGID = emp.EMPLOYER - </sql-query> - <sql-query name="organizationautodetect"> - <!-- equal to "organizationpropertyreturn" but since no {} nor return-property are used hibernate will fallback to use the columns directly from the mapping --> - <return alias="org" class="Organization"/> - <return-join alias="emp" property="org.employments"/> - SELECT org.orgid as orgid, org.name as name, emp.employer as employer, emp.empid as empid, emp.employee as employee, emp.employer as employer, emp.startDate as startDate, emp.endDate as endDate, emp.regionCode as regionCode, emp.VALUE as VALUE, emp.CURRENCY as CURRENCY - FROM ORGANIZATION org - LEFT OUTER JOIN EMPLOYMENT emp ON org.ORGID = emp.EMPLOYER - </sql-query> <!--sql-query name="organization"> <return alias="org" class="Organization"/> @@ -147,34 +110,9 @@ INNER JOIN EMPLOYMENT e ON e.EMPLOYER = org.ORGID </sql-query> - <sql-query name="orgNamesOnly"> - <return-scalar column="NAME" type="string"/> - SELECT org.NAME FROM ORGANIZATION org - </sql-query> - <sql-query name="orgNamesAndOrgs"> - <return-scalar column="thename" type="string"/> - <return alias="org" class="Organization"/> - SELECT org.NAME AS thename, org.NAME AS {org.name}, org.ORGID AS {org.id} - FROM ORGANIZATION org - ORDER BY thename - </sql-query> - <sql-query name="orgsAndOrgNames"> - <return alias="org" class="Organization"/> - <return-scalar column="thename" type="string"/> - SELECT org.NAME AS thename, org.NAME AS {org.name}, org.ORGID AS {org.id} - FROM ORGANIZATION org - ORDER BY thename - </sql-query> - <sql-query name="orgIdsAndOrgNames"> - <return-scalar column="orgid" type="long"/> - <return-scalar column="thename" type="string"/> - SELECT NAME AS thename, ORGID AS orgid - FROM ORGANIZATION - ORDER BY thename - </sql-query> <sql-query name="employment"> <return alias="emp" class="Employment"/> @@ -185,17 +123,7 @@ WHERE EMPID = ? </sql-query> - <sql-query name="AllEmploymentAsMapped"> - <return class="Employment"/> - SELECT * FROM EMPLOYMENT - </sql-query> - <sql-query name="EmploymentAndPerson"> - <return class="Employment"/> - <return class="Person"/> - SELECT * FROM Employment, Person - </sql-query> - <sql-query name="organizationEmployments"> <load-collection alias="empcol" role="Organization.employments"/> SELECT {empcol.*} @@ -204,13 +132,6 @@ ORDER BY STARTDATE ASC, EMPLOYEE ASC </sql-query> - <sql-query name="organizationEmploymentsExplicitAliases"> - <load-collection alias="empcol" role="Organization.employments"/> - SELECT empcol.employer as {empcol.key}, empcol.empid as {empcol.element}, {empcol.element.*} - FROM EMPLOYMENT empcol - WHERE EMPLOYER = :id - ORDER BY STARTDATE ASC, EMPLOYEE ASC - </sql-query> <sql-query name="organizationCurrentEmployments"> @@ -233,6 +154,11 @@ ORDER BY STARTDATE ASC </sql-query> + <sql-query name="simpleScalar" callable="true"> + <return-scalar column="name" type="string"/> + <return-scalar column="value" type="long"/> + { ? = call simpleScalar(:number) } + </sql-query> <sql-query name="paramhandling" callable="true"> <return-scalar column="value" type="long" /> <return-scalar column="value2" type="long" /> @@ -261,11 +187,6 @@ { ? = call allEmployments() } </sql-query> - <sql-query name="simpleScalar" callable="true"> - <return-scalar column="name" type="string"/> - <return-scalar column="value" type="long"/> - { ? = call simpleScalar(:number) } - </sql-query> <database-object> <create> Index: MySQLEmployment.hbm.xml =================================================================== RCS file: /cvsroot/hibernate/Hibernate3/test/org/hibernate/test/sql/MySQLEmployment.hbm.xml,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- MySQLEmployment.hbm.xml 18 Jan 2006 06:25:56 -0000 1.3 +++ MySQLEmployment.hbm.xml 9 Feb 2006 17:26:49 -0000 1.4 @@ -95,38 +95,7 @@ WHERE org.ORGID=? </sql-query> - <sql-query name="organizationreturnproperty"> - <return alias="org" class="Organization"> - <return-property name="id" column="orgid"/> - <return-property name="name" column="name"/> - </return> - <return-join alias="emp" property="org.employments"> - <return-property name="key" column="employer"/> - <return-property name="element" column="empid"/> - <return-property name="element.employee" column="EMPLOYEE"/> - <return-property name="element.employer" column="EMPLOYER"/> - <return-property name="element.startDate" column="STARTDATE"/> - <return-property name="element.endDate" column="ENDDATE"/> - <return-property name="element.regionCode" column="REGIONCODE"/> - <return-property name="element.employmentId" column="EMPID"/> - <return-property name="element.salary"> - <return-column name="VALUE"/> - <return-column name="CURRENCY"/> - </return-property> - </return-join> - SELECT org.orgid as orgid, org.name as name, emp.employer as employer, emp.empid as empid, emp.employee as employee, emp.employer as employer, emp.startDate as startDate, emp.endDate as endDate, emp.regionCode as regionCode, emp.VALUE as VALUE, emp.CURRENCY as CURRENCY - FROM ORGANIZATION org - LEFT OUTER JOIN EMPLOYMENT emp ON org.ORGID = emp.EMPLOYER - </sql-query> - <sql-query name="organizationautodetect"> - <!-- equal to "organizationpropertyreturn" but since no {} nor return-property are used hibernate will fallback to use the columns directly from the mapping --> - <return alias="org" class="Organization"/> - <return-join alias="emp" property="org.employments"/> - SELECT org.orgid as orgid, org.name as name, emp.employer as employer, emp.empid as empid, emp.employee as employee, emp.employer as employer, emp.startDate as startDate, emp.endDate as endDate, emp.regionCode as regionCode, emp.VALUE as VALUE, emp.CURRENCY as CURRENCY - FROM ORGANIZATION org - LEFT OUTER JOIN EMPLOYMENT emp ON org.ORGID = emp.EMPLOYER - </sql-query> <!--sql-query name="organization"> <return alias="org" class="Organization"/> @@ -141,35 +110,6 @@ INNER JOIN EMPLOYMENT e ON e.EMPLOYER = org.ORGID </sql-query> - <sql-query name="orgNamesOnly"> - <return-scalar column="NAME" type="string"/> - SELECT org.NAME FROM ORGANIZATION org - </sql-query> - - <sql-query name="orgNamesAndOrgs"> - <return-scalar column="thename" type="string"/> - <return alias="org" class="Organization"/> - SELECT org.NAME AS thename, org.NAME AS {org.name}, org.ORGID AS {org.id} - FROM ORGANIZATION org - ORDER BY thename - </sql-query> - - <sql-query name="orgsAndOrgNames"> - <return alias="org" class="Organization"/> - <return-scalar column="thename" type="string"/> - SELECT org.NAME AS thename, org.NAME AS {org.name}, org.ORGID AS {org.id} - FROM ORGANIZATION org - ORDER BY thename - </sql-query> - - <sql-query name="orgIdsAndOrgNames"> - <return-scalar column="orgid" type="long"/> - <return-scalar column="thename" type="string"/> - SELECT NAME AS thename, ORGID AS orgid - FROM ORGANIZATION - ORDER BY thename - </sql-query> - <sql-query name="employment"> <return alias="emp" class="Employment"/> SELECT EMPLOYEE AS {emp.employee}, EMPLOYER AS {emp.employer}, @@ -179,16 +119,6 @@ WHERE EMPID = ? </sql-query> - <sql-query name="AllEmploymentAsMapped"> - <return class="Employment"/> - SELECT * FROM EMPLOYMENT - </sql-query> - - <sql-query name="EmploymentAndPerson"> - <return class="Employment"/> - <return class="Person"/> - SELECT * FROM Employment, Person - </sql-query> <sql-query name="organizationEmployments"> <load-collection alias="empcol" role="Organization.employments"/> @@ -198,13 +128,6 @@ ORDER BY STARTDATE ASC, EMPLOYEE ASC </sql-query> - <sql-query name="organizationEmploymentsExplicitAliases"> - <load-collection alias="empcol" role="Organization.employments"/> - SELECT empcol.employer as {empcol.key}, empcol.empid as {empcol.element}, {empcol.element.*} - FROM EMPLOYMENT empcol - WHERE EMPLOYER = :id - ORDER BY STARTDATE ASC, EMPLOYEE ASC - </sql-query> <sql-query name="organizationCurrentEmployments"> <return alias="emp" class="Employment"> @@ -227,8 +150,8 @@ </sql-query> <sql-query name="simpleScalar" callable="true"> - <return-scalar column="name" type="string"/> - <return-scalar column="value" type="long"/> + <return-scalar column="name" type="string"/> + <return-scalar column="value" type="long"/> { call simpleScalar(:number) } </sql-query> Index: General.hbm.xml =================================================================== RCS file: /cvsroot/hibernate/Hibernate3/test/org/hibernate/test/sql/General.hbm.xml,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- General.hbm.xml 10 Jan 2006 23:04:27 -0000 1.1 +++ General.hbm.xml 9 Feb 2006 17:26:49 -0000 1.2 @@ -12,10 +12,139 @@ --> <hibernate-mapping package="org.hibernate.test.sql" default-access="field"> + <class name="Organization"> <id name="id" unsaved-value="0" column="orgid"> <generator class="increment"/> </id> <property name="name" not-null="true"/> - </class> + <set lazy="true" name="employments" + inverse="true"> + <key column="employer"/> <!-- only needed for DDL generation --> + <one-to-many class="Employment"/> + </set> + </class> + + <class name="Person"> + <id name="id" unsaved-value="0" column="perid"> + <generator class="increment"/> + </id> + <property name="name" not-null="true"/> + </class> + + <class name="Employment"> + <id name="employmentId" unsaved-value="0" column="empid"> + <generator class="increment"/> + </id> + <many-to-one name="employee" not-null="true" update="false"/> + <many-to-one name="employer" not-null="true" update="false"/> + <property name="startDate" not-null="false"/> + <property name="endDate" insert="false"/> + <property name="regionCode" update="false"/> + <property name="salary" type="org.hibernate.test.sql.MonetaryAmountUserType"> + <column name="VALUE" sql-type="float"/> + <column name="CURRENCY"/> + </property> + </class> + + <resultset name="org-emp-regionCode"> + <return-scalar column="regionCode" type="string"/> + <return alias="org" class="Organization"/> + <return-join alias="emp" property="org.employments"/> + </resultset> + + <resultset name="org-emp-person"> + <return alias="org" class="Organization"/> + <return-join alias="emp" property="org.employments"/> + <return-join alias="pers" property="emp.employee"/> + </resultset> + + + <resultset name="org-description"> + <return alias="org" class="Organization"/> + <return-join alias="emp" property="org.employments"/> + </resultset> + + <sql-query name="orgNamesOnly"> + <return-scalar column="NAME" type="string"/> + SELECT org.NAME FROM ORGANIZATION org + </sql-query> + + <sql-query name="orgNamesAndOrgs"> + <return-scalar column="thename" type="string"/> + <return alias="org" class="Organization"/> + SELECT org.NAME AS thename, org.NAME AS {org.name}, org.ORGID AS {org.id} + FROM ORGANIZATION org + ORDER BY thename + </sql-query> + + <sql-query name="orgsAndOrgNames"> + <return alias="org" class="Organization"/> + <return-scalar column="thename" type="string"/> + SELECT org.NAME AS thename, org.NAME AS {org.name}, org.ORGID AS {org.id} + FROM ORGANIZATION org + ORDER BY thename + </sql-query> + + <sql-query name="orgIdsAndOrgNames"> + <return-scalar column="orgid" type="long"/> + <return-scalar column="thename" type="string"/> + SELECT NAME AS thename, ORGID AS orgid + FROM ORGANIZATION + ORDER BY thename + </sql-query> + + <sql-query name="AllEmploymentAsMapped"> + <return class="Employment"/> + SELECT * FROM EMPLOYMENT + </sql-query> + + <sql-query name="EmploymentAndPerson"> + <return class="Employment"/> + <return class="Person"/> + SELECT * FROM Employment, Person + </sql-query> + + <sql-query name="organizationEmploymentsExplicitAliases"> + <load-collection alias="empcol" role="Organization.employments"/> + SELECT empcol.employer as {empcol.key}, empcol.empid as {empcol.element}, {empcol.element.*} + FROM EMPLOYMENT empcol + WHERE EMPLOYER = :id + ORDER BY STARTDATE ASC, EMPLOYEE ASC + </sql-query> + + <sql-query name="organizationreturnproperty"> + <return alias="org" class="Organization"> + <return-property name="id" column="orgid"/> + <return-property name="name" column="name"/> + </return> + <return-join alias="emp" property="org.employments"> + <return-property name="key" column="employer"/> + <return-property name="element" column="empid"/> + <return-property name="element.employee" column="EMPLOYEE"/> + <return-property name="element.employer" column="EMPLOYER"/> + <return-property name="element.startDate" column="XSTARTDATE"/> + <return-property name="element.endDate" column="ENDDATE"/> + <return-property name="element.regionCode" column="REGIONCODE"/> + <return-property name="element.employmentId" column="EMPID"/> + <return-property name="element.salary"> + <return-column name="VALUE"/> + <return-column name="CURRENCY"/> + </return-property> + </return-join> + SELECT org.orgid as orgid, org.name as name, emp.employer as employer, emp.empid as empid, emp.employee as employee, emp.employer as employer, emp.startDate as xstartDate, emp.endDate as endDate, emp.regionCode as regionCode, emp.VALUE as VALUE, emp.CURRENCY as CURRENCY + FROM ORGANIZATION org + LEFT OUTER JOIN EMPLOYMENT emp ON org.ORGID = emp.EMPLOYER + </sql-query> + + + <sql-query name="organizationautodetect" resultset-ref="org-description"> + <!-- equal to "organizationpropertyreturn" but since no {} nor return-property are used hibernate will fallback to use the columns directly from the mapping --> + <return alias="org" class="Organization"/> + <return-join alias="emp" property="org.employments"/> + SELECT org.orgid as orgid, org.name as name, emp.employer as employer, emp.empid as empid, emp.employee as employee, emp.employer as employer, emp.startDate as startDate, emp.endDate as endDate, emp.regionCode as regionCode, emp.VALUE as VALUE, emp.CURRENCY as CURRENCY + FROM ORGANIZATION org + LEFT OUTER JOIN EMPLOYMENT emp ON org.ORGID = emp.EMPLOYER + </sql-query> + </hibernate-mapping> \ No newline at end of file |