0

我是冬眠新手。我在使用休眠注释的应用程序中使用休眠 3,我正在使用 struts 1.3 开发应用程序。

我的问题是:我用谷歌搜索了很多,但不明白如何使用注释在休眠中调用存储过程,我有一个简单的场景:假设我的 jsp 中有 2 个字段,比如 1) 代码 2) 名称,我创建了一个数据库中的存储过程,用于将这些记录插入表中。现在我的问题是如何执行它

 List<MyBean> list = sessionFactory.getCurrentSession()
                          .getNamedQuery("mySp")
                        .setParameter("code", code)
                        .setParameter("name", name)

我不知道如何执行此操作的确切代码。但我想这样的事情实际上我来自 jdbc 背景,因此在使用存储过程从数据库中选择数据时不知道如何执行此操作以及我想要的相同操作。

4

2 回答 2

2

Hibernate 提供了许多简单的方法来调用 SP,例如

  1. 本机 SQL
  2. 原生 SQL 中的命名查询作为注释/XML 映射文件

以下链接显示了如何实现上述各项

http://www.mkyong.com/hibernate/how-to-call-store-procedure-in-hibernate/

http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/querysql.html#sp_query

使用休眠运行本机 SQL 查询的示例:

 Session session = getSession();
    SQLQuery sqlQuery = session.createSQLQuery("SELECT COUNT(id) FROM tableName WHERE external_id = :external_id");
    sqlQuery.setParameter("external_id", idValue);
    int count = ((BigInteger) sqlQuery.uniqueResult()).intValue();
    releaseSession(session);
于 2012-07-09T18:14:39.690 回答
0

您可以使用 Hibernate 的 SQLQuery 执行存储过程,使用与对数据库调用它时相同的 SQL。例如,在 postgreSQL 中:

String query = "select schema.procedure_name(:param1)";
SQLQuery sqlquery = sessionFactory.getCurrentSession().createSQLQuery(query);
sqlquery.setInteger("param1", "this is first parameter");
sqlQuery.list();

希望能帮助到你。

于 2012-07-09T13:25:23.947 回答