工程里已有product和order_product这俩表对应的class和hbm文件
我的存储过程是:
CREATE PROCEDURE `delp`(IN x int(11))
BEGIN DELETE product,order_product FROM product,order_product WHERE product.productid=order_product.productid AND product.productid=x; END;
//-----------------------//
hibernate的hbm里要如何配置啊?DAO里又应如何让写啊,参数应如何设置啊?
我的存储过程是:
CREATE PROCEDURE `delp`(IN x int(11))
BEGIN DELETE product,order_product FROM product,order_product WHERE product.productid=order_product.productid AND product.productid=x; END;
//-----------------------//
hibernate的hbm里要如何配置啊?DAO里又应如何让写啊,参数应如何设置啊?
begin
update STUDENT set AGE=AGE+1 where AGE>p_age;
end;以上存储过程有一个参数p_age,代表学生的年龄,应用程序可按照以下方式调用存储过程:tx = session.beginTransaction();
Connection con=session.connection();String procedure = "{call batchUpdateStudent(?) }";
CallableStatement cstmt = con.prepareCall(procedure);
cstmt.setInt(1,0); //把年龄参数设为0
cstmt.executeUpdate();
tx.commit();在以上代码中,我用的是Hibernate的 Transaction接口来声明事务,而不是采用JDBC API来声明事务
如果有关于返回的存储过程,就需要设置了,至少让hibernate该把返回变成什么对象(数组)吧~
这个是正确的
因为Hibernate3.2以前是不支持数据库存储过程的。
3.2后的版本支持。
还有,我用的是继承hibernatedaosupport,像这样同时删除product表及其在order_product表通过productid关联的信息
public void delete(int pid) throws Exception
{
String hql = "DELETE FROM Product WHERE productid=?";
//String shql = "DELETE product,order_product FROM product,order_product WHERE product.productid=order_product.productid AND product.productid=?";
Query q = super.getSession().createSQLQuery(hql);
//int i=0;
//Query q = super.getSession().getNamedQuery("delp");
//q.setInteger(0, i);
q.setInteger(0, pid);
q.executeUpdate();
}
RETURN SYS_REFCURSOR
AS
st_cursor SYS_REFCURSOR;
BEGIN
OPEN st_cursor FOR
SELECT EMPLOYEE, EMPLOYER,
STARTDATE, ENDDATE,
REGIONCODE, EID, VALUE, CURRENCY
FROM EMPLOYMENT;
RETURN st_cursor;
END;
在Hibernate里要要使用这个查询,你需要通过命名查询来映射它. <sql-query name="selectAllEmployees_SP" 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="id" column="EID"/>
<return-property name="salary">
<return-column name="VALUE"/>
<return-column name="CURRENCY"/>
</return-property>
</return>
{ ? = call selectAllEmployments() }
</sql-query>