我是hibernate的新手。我正在使用hibernate注释在我的应用程序中使用hibernate 3,我正在使用struts 1.3开发应用程序。
我的问题是: 我已经google了很多但是无法理解如何在使用注释的hibernate中调用存储过程,我有一个简单的场景:假设我的jsp中有2个字段说1)代码2)名称,我在数据库中创建了一个存储过程,用于将这些记录插入表中。现在我的问题是如何执行它
List<MyBean> list = sessionFactory.getCurrentSession()
.getNamedQuery("mySp")
.setParameter("code", code)
.setParameter("name", name)
我不知道确切的代码如何执行此操作。但我想这样的事实上我来自jdbc背景,因此当使用存储过程从数据库中选择数据时,我不知道如何做到这一点和我想要的一样。
答案 0 :(得分:2)
Hibernate提供了许多简单的方法来调用SP,如
以下链接显示了上述各项的实施方式
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
使用hibernate运行本机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);
答案 1 :(得分: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();
希望它有所帮助。