hibernate调用过程、函数

1.通过Hibernate API或者JDBC,API调用存储过程:

	CallableStatement cal = sess.connection().prepareCall(
			"{Call scott.selectdept(?,?)}");
	cal.setString(1, 10 + "");
	cal.registerOutParameter(2, OracleTypes.CURSOR);
	cal.executeQuery();
	ResultSet rs = (ResultSet) cal.getObject(2);
	while (rs.next()) {
		System.out.println(rs.getString(1) + "  " + rs.getString(2));
	}

调用函数(不是SQL语句):

		CallableStatement cal=con.prepareCall("{call ?:=get_sal(?)}");//函数
		cal.registerOutParameter(1, Types.DOUBLE);
		cal.setString(2, "7369");
		cal.executeQuery();
		String ss=cal.getString(1);
		System.out.println(ss);

2.直接使用 Hibernate createQuerySql调用函数:

	Session sess=fac.getCurrentSession();
	Transaction tran = sess.beginTransaction();
	SQLQuery squery = sess
		.createSQLQuery("select get_sal(?) from scott.emp");
	squery.setParameter(0, "7369");
	List list = squery.list();
	tran.commit();

3.通过XML传统的映射方式去调用:

<sql-query name="funtest" callable="true">  
    <return alias="emp" class="org.han.entity.Emp">  
        <return-property name="empno" column="empno"></return-property>  
        <return-property name="ename" column="ename"></return-property>  
        <return-property name="job" column="job"></return-property>  
        <return-property name="mgr" column="mgr"></return-property>  
        <return-property name="hiredate" column="hiredate"></return-property>  
        <return-property name="sal" column="sal"></return-property>  
        <return-property name="comm" column="comm"></return-property>  
        <return-property name="dept" column="deptno"></return-property>  
        <return-property name="version" column="version"></return-property>  
    </return>  
    {?=call getemp.getempc(?)}  
</sql-query>
调用:
List<Emp> emps=session.getNamedQuery("funtest").setInteger(0, 10).list();  
for (Emp emp : emps) {  
    System.out.println(emp);  
}

4.hibernate注册自定义函数:

点击打开链接




你可能感兴趣的:(Hibernate)