如何在hibernate hbm文件和pojo以及java类中调用多个表的存储过程

时间:2012-02-10 08:28:16

标签: java hibernate stored-procedures hibernate-mapping

SELECT emp.employeeId, emp.employeeFirstName, comp.companyname, dept.departmentname 
FROM Employeetable emp, Companytable comp, departmenttable dept 
WHERE emp.employeeCompanyId=comp.companyId AND emp.EmployeeDepartmentID=dept.DepartmentID;

有效的hbm文件:

<sql-query name="callrealtimeprocedure">
    <return alias="employeetable" class="com.AdiSys.eRMS.entity.Employeetable"/>
    <return-join alias="companytable" property="com.AdiSys.eRMS.entity.Employeetable"/>
    <return-join alias="companytable" property="com.AdiSys.eRMS.entity.Employeetable"/>
</sql-query>

有责任的pojo:

@NamedNativeQueries({
@NamedNativeQuery(
name = "callrealtimeprocedure",
query = "CALL realtime(:employeeId,:employeeFirstName)",
resultClass = Employeetable.class
)
})
@Entity

同样是部门hbm和pojo。

创建会话后的我的java类:

Query EmplyeeQuery = session.createSQLQuery("CALL realtime(:employeeId,:employeeFirstName,:companyname,:departmentname)")
        .addEntity(Employeetable.class)
        .addEntity(Companytable.class)
        .addEntity(Departmenttable.class)
        .setParameter("employeeId", "")
        .setParameter("employeeFirstName","")
        .setParameter("companyname", "")
        .setParameter("departmentname", "");

我无法找到如何在hbm和pojo以及java类中链接存储过程sql查询

1 个答案:

答案 0 :(得分:0)

嗯,首先,我不会对存储过程感到困扰。使用Hibernate的全部意义在于您不需要编写任何SQL。如果您要编写SQL,那么使用Hibernate并没有太大的收获。

Hibernate文档的一个非常好的来源是http://www.hibernate.org/docs - 如果你转到&#34;核心参考手册&#34;无论您使用哪种版本的Hibernate,您都会找到一些关于如何设置POJO的非常好的示例。

另外,我不知道您是否计划使用Hibernate注释。我喜欢这些 - 与使用单独的XML文件相比,它们不那么混乱。看看&#34; Hibernate Annotations参考指南&#34; (来自同一链接,在v3.5下),以获得使用它们的指导。