From: <hib...@li...> - 2006-02-28 20:41:16
|
Author: ste...@jb... Date: 2006-02-28 15:41:05 -0500 (Tue, 28 Feb 2006) New Revision: 9521 Modified: trunk/Hibernate3/test/org/hibernate/test/sql/OracleDriverStoredProcedures.hbm.xml trunk/Hibernate3/test/org/hibernate/test/sql/OracleEmployment.hbm.xml trunk/Hibernate3/test/org/hibernate/test/sql/OracleSQLTest.java Log: merged changes needed for datadirect (oracle) support testing Modified: trunk/Hibernate3/test/org/hibernate/test/sql/OracleDriverStoredProcedures.hbm.xml =================================================================== --- trunk/Hibernate3/test/org/hibernate/test/sql/OracleDriverStoredProcedures.hbm.xml 2006-02-28 17:59:02 UTC (rev 9520) +++ trunk/Hibernate3/test/org/hibernate/test/sql/OracleDriverStoredProcedures.hbm.xml 2006-02-28 20:41:05 UTC (rev 9521) @@ -1,48 +1,47 @@ <?xml version="1.0"?> -<!DOCTYPE hibernate-mapping PUBLIC - "-//Hibernate/Hibernate Mapping DTD 3.0//EN" - "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> +<!DOCTYPE hibernate-mapping PUBLIC + "-//Hibernate/Hibernate Mapping DTD 3.0//EN" + "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <!-- This version is for Oracle drivers proprietary handling of stored procedures/functions. --> -<hibernate-mapping - package="org.hibernate.test.sql" - default-access="field"> +<hibernate-mapping package="org.hibernate.test.sql" default-access="field"> - <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" /> - { ? = call testParamHandling(?,?) } - </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_mixed" callable="true"> - <return-scalar column="value" type="long" /> - <return-scalar column="value2" type="long" /> - { ? = call testParamHandling(?,:second) } - </sql-query> + <sql-query name="paramhandling" callable="true"> + <return-scalar column="value" type="long"/> + <return-scalar column="value2" type="long"/> + { ? = call testParamHandling(?,?) } + </sql-query> - <sql-query name="selectAllEmployments" callable="true"> - <return alias="emp" class="Employment"> - <return-property name="employee" column="EMPLOYEE"/> - <return-property name="employer" column="EMPLOYER"/> - <return-property name="startDate" column="STARTDATE"/> - <return-property name="endDate" column="ENDDATE"/> - <return-property name="regionCode" column="REGIONCODE"/> - <return-property name="employmentId" column="EMPID"/> - <return-property name="salary"> - <return-column name="VALUE"/> - <return-column name="CURRENCY"/> - </return-property> - </return> - { ? = call allEmployments() } - </sql-query> - + <sql-query name="paramhandling_mixed" callable="true"> + <return-scalar column="value" type="long"/> + <return-scalar column="value2" type="long"/> + { ? = call testParamHandling(?,:second) } + </sql-query> + + <sql-query name="selectAllEmployments" callable="true"> + <return alias="emp" class="Employment"> + <return-property name="employee" column="EMPLOYEE"/> + <return-property name="employer" column="EMPLOYER"/> + <return-property name="startDate" column="STARTDATE"/> + <return-property name="endDate" column="ENDDATE"/> + <return-property name="regionCode" column="REGIONCODE"/> + <return-property name="employmentId" column="EMPID"/> + <return-property name="salary"> + <return-column name="VALUE"/> + <return-column name="CURRENCY"/> + </return-property> + </return> + { ? = call allEmployments() } + </sql-query> + </hibernate-mapping> Modified: trunk/Hibernate3/test/org/hibernate/test/sql/OracleEmployment.hbm.xml =================================================================== --- trunk/Hibernate3/test/org/hibernate/test/sql/OracleEmployment.hbm.xml 2006-02-28 17:59:02 UTC (rev 9520) +++ trunk/Hibernate3/test/org/hibernate/test/sql/OracleEmployment.hbm.xml 2006-02-28 20:41:05 UTC (rev 9521) @@ -1,74 +1,75 @@ <?xml version="1.0"?> -<!DOCTYPE hibernate-mapping PUBLIC - "-//Hibernate/Hibernate Mapping DTD 3.0//EN" - "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> +<!DOCTYPE hibernate-mapping PUBLIC + "-//Hibernate/Hibernate Mapping DTD 3.0//EN" + "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> -<!-- +<!-- This mapping demonstrates the use of Hibernate with all-handwritten SQL! - + This version is for Oracle - + --> -<hibernate-mapping - package="org.hibernate.test.sql" - default-access="field"> +<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"/> - <set name="employments" - inverse="true" - order-by="DUMMY"> - <key column="employer"/> <!-- only needed for DDL generation --> - <one-to-many class="Employment"/> - <loader query-ref="organizationEmployments"/> - </set> - <!-- query-list name="currentEmployments" - 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> - <sql-delete>DELETE FROM ORGANIZATION WHERE ORGID=?</sql-delete> - </class> - - <class name="Person"> - <id name="id" unsaved-value="0" column="perid"> - <generator class="increment"/> - </id> - <property name="name" not-null="true"/> - <loader query-ref="person"/> - <sql-insert>INSERT INTO PERSON (NAME, PERID) VALUES ( UPPER(?), ? )</sql-insert> - <sql-update>UPDATE PERSON SET NAME=UPPER(?) WHERE PERID=?</sql-update> - <sql-delete>DELETE FROM PERSON WHERE PERID=?</sql-delete> - </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="true" update="false" insert="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> - <loader query-ref="employment"/> - <sql-insert> - INSERT INTO EMPLOYMENT - (EMPLOYEE, EMPLOYER, STARTDATE, REGIONCODE, VALUE, CURRENCY, EMPID) - VALUES (?, ?, CURRENT_DATE, UPPER(?), ?, ?, ?) - </sql-insert> - <sql-update>UPDATE EMPLOYMENT SET ENDDATE=?, VALUE=?, CURRENCY=? WHERE EMPID=?</sql-update> - <sql-delete>DELETE FROM EMPLOYMENT WHERE EMPID=?</sql-delete> - </class> + <class name="Organization"> + <id name="id" unsaved-value="0" column="orgid"> + <generator class="increment"/> + </id> + <property name="name" not-null="true"/> + <set name="employments" + inverse="true" + order-by="DUMMY"> + <key column="employer"/> + <!-- only needed for DDL generation --> + <one-to-many class="Employment"/> + <loader query-ref="organizationEmployments"/> + </set> + <!-- query-list name="currentEmployments" + 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> + <sql-delete>DELETE FROM ORGANIZATION WHERE ORGID=?</sql-delete> + </class> + <class name="Person"> + <id name="id" unsaved-value="0" column="perid"> + <generator class="increment"/> + </id> + <property name="name" not-null="true"/> + <loader query-ref="person"/> + <sql-insert>INSERT INTO PERSON (NAME, PERID) VALUES ( UPPER(?), ? )</sql-insert> + <sql-update>UPDATE PERSON SET NAME=UPPER(?) WHERE PERID=?</sql-update> + <sql-delete>DELETE FROM PERSON WHERE PERID=?</sql-delete> + </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="true" update="false" insert="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> + <loader query-ref="employment"/> + <sql-insert> + INSERT INTO EMPLOYMENT + (EMPLOYEE, EMPLOYER, STARTDATE, REGIONCODE, VALUE, CURRENCY, EMPID) + VALUES (?, ?, CURRENT_DATE, UPPER(?), ?, ?, ?) + </sql-insert> + <sql-update>UPDATE EMPLOYMENT SET ENDDATE=?, VALUE=?, CURRENCY=? WHERE EMPID=?</sql-update> + <sql-delete>DELETE FROM EMPLOYMENT WHERE EMPID=?</sql-delete> + </class> + <resultset name="org-emp-regionCode"> <return-scalar column="regionCode" type="string"/> <return alias="org" class="Organization"/> @@ -81,159 +82,113 @@ <return-join alias="pers" property="emp.employee"/> </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="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"> - <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="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="allOrganizationsWithEmployees" flush-mode="never"> + <return alias="org" class="Organization"/> + SELECT DISTINCT org.NAME AS {org.name}, org.ORGID AS {org.id} + FROM ORGANIZATION org + INNER JOIN EMPLOYMENT e ON e.EMPLOYER = org.ORGID + </sql-query> - <!--sql-query name="organization"> - <return alias="org" class="Organization"/> - SELECT NAME AS {org.name}, ORGID AS {org.id} FROM ORGANIZATION - WHERE ORGID=? - </sql-query--> - - <sql-query name="allOrganizationsWithEmployees" flush-mode="never"> - <return alias="org" class="Organization"/> - SELECT DISTINCT org.NAME AS {org.name}, org.ORGID AS {org.id} - FROM ORGANIZATION org - INNER JOIN EMPLOYMENT e ON e.EMPLOYER = org.ORGID - </sql-query> - - - - - <sql-query name="employment"> - <return alias="emp" class="Employment"/> - SELECT EMPLOYEE AS {emp.employee}, EMPLOYER AS {emp.employer}, - STARTDATE AS {emp.startDate}, ENDDATE AS {emp.endDate}, - REGIONCODE as {emp.regionCode}, EMPID AS {emp.id} - FROM EMPLOYMENT - WHERE EMPID = ? - </sql-query> + <sql-query name="employment"> + <return alias="emp" class="Employment"/> + SELECT EMPLOYEE AS {emp.employee}, EMPLOYER AS {emp.employer}, + STARTDATE AS {emp.startDate}, ENDDATE AS {emp.endDate}, + REGIONCODE as {emp.regionCode}, EMPID AS {emp.id} + FROM EMPLOYMENT + WHERE EMPID = ? + </sql-query> - <sql-query name="organizationEmployments"> - <load-collection alias="empcol" role="Organization.employments"/> - SELECT {empcol.*} - FROM EMPLOYMENT empcol - WHERE EMPLOYER = :id - ORDER BY STARTDATE ASC, EMPLOYEE ASC - </sql-query> + <sql-query name="organizationEmployments"> + <load-collection alias="empcol" role="Organization.employments"/> + SELECT {empcol.*} + FROM EMPLOYMENT empcol + WHERE EMPLOYER = :id + ORDER BY STARTDATE ASC, EMPLOYEE ASC + </sql-query> - - <sql-query name="organizationCurrentEmployments"> - <return alias="emp" class="Employment"> - <return-property name="salary"> - <!-- as multi column properties are not supported via the - {}-syntax, we need to provide an explicit column list for salary via <return-property> --> - <return-column name="VALUE"/> - <return-column name="CURRENCY"/> - </return-property> - <!-- Here we are remapping endDate. Notice that we can still use {emp.endDate} in the SQL. --> - <return-property name="endDate" column="myEndDate"/> - </return> - <synchronize table="EMPLOYMENT"/> - SELECT EMPLOYEE AS {emp.employee}, EMPLOYER AS {emp.employer}, - STARTDATE AS {emp.startDate}, ENDDATE AS {emp.endDate}, - REGIONCODE as {emp.regionCode}, EMPID AS {emp.id}, VALUE, CURRENCY - FROM EMPLOYMENT - WHERE EMPLOYER = :id AND ENDDATE IS NULL - ORDER BY STARTDATE ASC - </sql-query> + <sql-query name="organizationCurrentEmployments"> + <return alias="emp" class="Employment"> + <return-property name="salary"> + <!-- as multi column properties are not supported via the + {}-syntax, we need to provide an explicit column list for salary via <return-property> --> + <return-column name="VALUE"/> + <return-column name="CURRENCY"/> + </return-property> + <!-- Here we are remapping endDate. Notice that we can still use {emp.endDate} in the SQL. --> + <return-property name="endDate" column="myEndDate"/> + </return> + <synchronize table="EMPLOYMENT"/> + SELECT EMPLOYEE AS {emp.employee}, EMPLOYER AS {emp.employer}, + STARTDATE AS {emp.startDate}, ENDDATE AS {emp.endDate}, + REGIONCODE as {emp.regionCode}, EMPID AS {emp.id}, VALUE, CURRENCY + FROM EMPLOYMENT + WHERE EMPLOYER = :id AND ENDDATE IS NULL + 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" /> - { ? = call testParamHandling(?,?) } - </sql-query> + <database-object> + <create> + CREATE OR REPLACE FUNCTION testParamHandling (j number, i number) + RETURN SYS_REFCURSOR AS st_cursor SYS_REFCURSOR; + BEGIN + OPEN st_cursor FOR + SELECT j as value, i as value2 from dual; + RETURN st_cursor; + END; + </create> + <drop> + DROP FUNCTION testParamHandling + </drop> + </database-object> - <sql-query name="paramhandling_mixed" callable="true"> - <return-scalar column="value" type="long" /> - <return-scalar column="value2" type="long" /> - { ? = call testParamHandling(?,:second) } - </sql-query> + <database-object> + <create> + CREATE OR REPLACE FUNCTION simpleScalar (j number) + RETURN SYS_REFCURSOR AS st_cursor SYS_REFCURSOR; + BEGIN + OPEN st_cursor FOR + SELECT j as value, 'getAll' as name from dual; + RETURN st_cursor; + END; + </create> + <drop> + DROP FUNCTION simpleScalar + </drop> + </database-object> - <sql-query name="selectAllEmployments" callable="true"> - <return alias="emp" class="Employment"> - <return-property name="employee" column="EMPLOYEE"/> - <return-property name="employer" column="EMPLOYER"/> - <return-property name="startDate" column="STARTDATE"/> - <return-property name="endDate" column="ENDDATE"/> - <return-property name="regionCode" column="REGIONCODE"/> - <return-property name="employmentId" column="EMPID"/> - <return-property name="salary"> - <return-column name="VALUE"/> - <return-column name="CURRENCY"/> - </return-property> - </return> - { ? = call allEmployments() } - </sql-query> + <database-object> + <create> + CREATE OR REPLACE FUNCTION allEmployments + RETURN SYS_REFCURSOR AS st_cursor SYS_REFCURSOR; + BEGIN + OPEN st_cursor FOR + SELECT EMPLOYEE, EMPLOYER, STARTDATE, ENDDATE, + REGIONCODE, EMPID, VALUE, CURRENCY + FROM EMPLOYMENT; + RETURN st_cursor; + END; + </create> + <drop> + DROP FUNCTION allEmployments + </drop> + </database-object> - - <database-object> - <create> - CREATE OR REPLACE FUNCTION testParamHandling (j number, i number) - RETURN SYS_REFCURSOR AS st_cursor SYS_REFCURSOR; - BEGIN - OPEN st_cursor FOR - SELECT j as value, i as value2 from dual; - RETURN st_cursor; - END; - </create> - <drop> - DROP FUNCTION paramHandling - </drop> - </database-object> - - <database-object> - <create> - CREATE OR REPLACE FUNCTION simpleScalar (j number) - RETURN SYS_REFCURSOR AS st_cursor SYS_REFCURSOR; - BEGIN - OPEN st_cursor FOR - SELECT j as value, 'getAll' as name from dual; - RETURN st_cursor; - END; - </create> - <drop> - DROP FUNCTION simpleScalar - </drop> - </database-object> - - <database-object> - <create> - CREATE OR REPLACE FUNCTION allEmployments - RETURN SYS_REFCURSOR AS st_cursor SYS_REFCURSOR; - BEGIN - OPEN st_cursor FOR - SELECT EMPLOYEE, EMPLOYER, STARTDATE, ENDDATE, - REGIONCODE, EMPID, VALUE, CURRENCY - FROM EMPLOYMENT; - RETURN st_cursor; - END; - </create> - <drop> - DROP FUNCTION allEmployments - </drop> - </database-object> - - </hibernate-mapping> Modified: trunk/Hibernate3/test/org/hibernate/test/sql/OracleSQLTest.java =================================================================== --- trunk/Hibernate3/test/org/hibernate/test/sql/OracleSQLTest.java 2006-02-28 17:59:02 UTC (rev 9520) +++ trunk/Hibernate3/test/org/hibernate/test/sql/OracleSQLTest.java 2006-02-28 20:41:05 UTC (rev 9521) @@ -6,18 +6,19 @@ import org.hibernate.dialect.Dialect; import org.hibernate.dialect.Oracle9Dialect; +import org.hibernate.dialect.DataDirectOracle9Dialect; /** * @author Gavin King */ public class OracleSQLTest extends HandSQLTest { - + public OracleSQLTest(String str) { super(str); } protected String[] getMappings() { - return new String[] { "sql/OracleEmployment.hbm.xml" }; + return new String[] { "sql/OracleEmployment.hbm.xml", "sql/OracleDriverStoredProcedures.hbm.xml" }; } public static Test suite() { @@ -25,7 +26,7 @@ } public boolean appliesTo(Dialect dialect) { - return ( dialect instanceof Oracle9Dialect ); + return ( dialect instanceof Oracle9Dialect ) && !( dialect instanceof DataDirectOracle9Dialect ); } } |