mysql - 使用 Hibernate 和 Spring 调用存储过程

标签 mysql hibernate spring stored-procedures

网上有很多描述如何使用Hibernate调用存储过程的例子,然而,当使用Spring时,情况有点不同。

我在 MySQL 中有一个存储过程,我想调用它: 在 SQL 中,我需要编写以下内容:

CALL inrange(32.342324,32.234234);
It returns a row with the following: `{INT},{INT},{FLOAT}`

对于 Spring,我使用 HibernateTemplate 执行 hibernate 操作的方式,我知道你们中的一些人不会喜欢它,但这就是我开始时项目的样子,我'我不太急于改变它,也许在未来......

目前,我在 Java 中有以下代码,它试图调用该过程:

List<Object[]> resultset = hibernateTemplate
                               .findByNamedQuery("inrange",
                                    person.getAddress().getLatitude(),
                                    person.getAddress().getLongitude());

当我运行它时,我得到以下 Hibernate 异常:

org.springframework.orm.hibernate3.HibernateSystemException:
   Named query not known: inrange;

我认为这是由于我没有在 hibernate 中声明存储过程而发生的。 我的问题是:

  • 如何申报?
  • 在 Spring 的应用程序上下文文件中是否有特殊的声明方式?

最佳答案

您可以在 hibernate 中调用 native sql 查询。

查看此链接: http://www.mkyong.com/hibernate/how-to-call-store-procedure-in-hibernate/

顺便说一句,如果你想调用存储过程,你可以简单地使用 Spring JdbcTemplate。

请注意, hibernate 扩展可以满足您的需求: http://www.hibernatespatial.org/

关于mysql - 使用 Hibernate 和 Spring 调用存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8378272/

相关文章:

mysql - 为现有 Wordpress 站点设置 Docker 容器

java - 从 Hibernate 和 Spring 连接到多个数据库

php - 成功调用后访问jquery函数?

php - 如何访问具有相同名称的不同表的多个mysql行

mysql - JPA 映射因奇怪消息而失败

java - 当 Hibernate 已经存在并使用缓存时使用 memcached

java - ORA-08103 : object no longer exists: This error is occuring for Oracle Procedure returning Refcursor from MyBatis

java - 软删除 : Child Entity not being deleted after Deleting parent Entity in @OneToMany relation in Spring Boot JPA Hibernate

java - Bean创建异常: Error creating bean with name 'sessionFactory'

java - JPA 实体有多个同一类的对象