最近案子里要用到JPA調用存儲過程,所以先試著寫了個最簡單的,但是跑不起來,特來請教各位大大:
我用的是Oracle數據庫,存儲過程如下:
引用
CREATE OR REPLACE procedure HTCHR.test_ is
rowss number;
BEGIN
select count(*) into rowss from basechecksalary;
END;
/
然後調用的時候是這樣調用的:
Query query = entityManager.createNativeQuery("{call test_()}");
query.getResultList();
// query.getSingleResult();
但是不管用getResultList還是getSingleResult,都會報一個“Could not extract result set metadata”的異常:
引用
Caused by: org.hibernate.HibernateException: Could not extract result set metadata
at org.hibernate.loader.custom.CustomLoader$Metadata.<init>(CustomLoader.java:524)
at org.hibernate.loader.custom.CustomLoader.autoDiscoverTypes(CustomLoader.java:494)
at org.hibernate.loader.Loader.getResultSet(Loader.java:1796)
at org.hibernate.loader.Loader.doQuery(Loader.java:674)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
at org.hibernate.loader.Loader.doList(Loader.java:2220)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)
at org.hibernate.loader.Loader.list(Loader.java:2099)
at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:289)
at org.hibernate.impl.SessionImpl.listCustomQuery(SessionImpl.java:1695)
at org.hibernate.impl.AbstractSessionImpl.list(AbstractSessionImpl.java:142)
at org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl.java:152)
at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:64)
... 82 more
Caused by: java.sql.SQLException: ORA-00900: SQL 敘述句無效
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:283)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:278)
at oracle.jdbc.driver.T4C8Odscrarr.receive(T4C8Odscrarr.java:214)
at oracle.jdbc.driver.T4CPreparedStatement.doDescribe(T4CPreparedStatement.java:732)
at oracle.jdbc.driver.OracleStatement.describe(OracleStatement.java:3462)
at oracle.jdbc.driver.OracleResultSetMetaData.<init>(OracleResultSetMetaData.java:57)
at oracle.jdbc.driver.OracleResultSetImpl.getMetaData(OracleResultSetImpl.java:138)
at org.jboss.resource.adapter.jdbc.WrappedResultSet.getMetaData(WrappedResultSet.java:731)
at org.hibernate.loader.custom.CustomLoader$Metadata.<init>(CustomLoader.java:521)
... 94 more
我又寫了另個insert的存儲過程,然後query.executeUpdate()是可以正確執行的
我有在一個地方看到,說
引用
在EJB3中你可以調用的存儲過程有兩種:
1.無返回值的存儲過程
2.返回值為ResultSet的存儲過程,EJB3不能調用以OUT參數返回值的存儲過程。
不知道是不是因為這個原因。
還有,我不知道我上面寫的那個存儲過程算不算“以OUT參數返回值的存儲過程”
請各位大大不吝賜教,小弟感激不盡,謝謝!
分享到:
- 2009-09-08 09:14
- 浏览 1598
- 评论(0)
- 论坛回复 / 浏览 (0 / 2656)
- 查看更多
相关推荐
Spring Data JPA 提供了调用存储过程的能力,使得在Java应用中使用存储过程变得方便。 1. **存储过程** 存储过程是数据库中预编译的SQL语句集合,可以接受参数并返回结果。在本例中,我们有 `test_pkg` 包下的两个...
3. Oracle存储过程的创建与使用 在Oracle数据库中,存储过程是预编译的PL/SQL代码块,可以封装复杂的业务逻辑。创建存储过程的基本语法如下: ```sql CREATE OR REPLACE PROCEDURE 存储过程名 IS BEGIN NULL;...
它提供了高性能、高可靠性和丰富的特性,如ACID事务、存储过程、分区等,适合处理大规模数据。 在"springboot+jpa+oracle"项目中,你将学习如何配置Spring Boot应用以连接Oracle数据库,包括设置数据库连接信息(如...
"springboot+jpa+oracle+maven"项目是一个基于SpringBoot框架、使用JPA进行ORM、Oracle作为数据存储、Maven管理依赖的Java应用示例。它提供了一个基础架构,开发者可以根据需求添加具体的业务逻辑和功能。不过,由于...
背景如果文本值存储在数据类型为CHAR(n)的 Oracle 列中,则数据库在将该值保存到列之前最多n字符。 后来,尝试使用 Hibernate 或 JPA 等框架搜索具有相同值的列失败,因为搜索词没有填充到n ,导致搜索词与列中存储...
我们可以通过几种不同的方式调用Oracle存储过程。 使用 使用javax.persistence 。 我们在这种情况下使用了这种方法无论我们选择哪种方式,在使用spring-data时都应该设置一些关键方面/属性(尤其是当我们不让Spring...
EJB(Enterprise JavaBeans)是Java EE平台中的一个核心组件,用于...文档"EJB调用存储过程_1.doc"和"EJB调用存储过程_2.doc"可能包含更具体的示例代码和实际应用案例,阅读这些文档将进一步加深你对这一主题的认识。
有效解决 Schema-validation: missing table org.springframework.boot.context.event.ApplicationFailedEvent cannot be cast to org.springframework.boot.web.context.WebServerInitializedEvent ...
Java中调用SQL Server存储过程是一项常见的任务,特别是在开发企业级应用时,因为存储过程能够封装复杂的数据库逻辑,提高性能并降低网络流量。本篇文章详细介绍了如何通过Java调用SQL Server存储过程,涵盖了几种...
调用存储过程的方法主要依赖于EntityManager对象的createNativeQuery()方法,该方法用于执行非JPA(Java Persistence API)的SQL语句。调用存储过程的SQL格式通常如下: ```sql {call 存储过程名称(参数 1, 参数 2,...
该项目是一款采用SpringBoot、JPA和Oracle数据库技术的企业级人事档案管理系统源码。该系统包含123个文件,其中63个Java源文件、16个PNG图片文件、16个JSP页面文件、13个JavaScript文件、2个属性文件、2个XML文件...
在本文中,我们将深入探讨如何使用Spring Boot与Java Persistence API (JPA) 实现批量存储操作。Spring Boot简化了设置和配置,而JPA作为Java的ORM(对象关系映射)框架,允许开发者以面向对象的方式操作数据库。...
综上所述,这个系统利用Spring Boot的便捷性,JPA的ORM能力,Oracle的稳定存储,Maven的项目管理,以及JSP的动态页面展示,构建了一个高效、易维护的人事档案管理系统。对于学习者来说,这是一份很好的源码实例,...
Java Persistence API(JPA)是Java平台上的一个标准框架,用于管理关系数据库中的对象-关系映射(ORM)。它提供了一种方式将Java类映射到数据库表,从而简化数据库操作。以下是如何在Eclipse环境下配置JPA的详细...
JPA注解参考_Oracle.chm 通过它可以全面的掌握JPA编程
在本文档中,我们将讨论如何通过JPA(Java Persistence API)存储来配置CAS的Ticket共享,以支持负载均衡。 【实现负载均衡】 负载均衡通常通过在多个服务器之间分配网络流量来提高系统的响应时间和可用性。对于...
Oracle Toplink JPA