- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 PLSQL 存储过程获取行,并将它们保存到 JPA 实体中。我正在使用ojbdc7
, spring-boot-starter-data-jpa
和spring-boot 2.2.1
.
这是我的程序:
create or replace PACKAGE BODY pkg_test
AS
PROCEDURE getAll(res OUT SYS_REFCURSOR)
IS
BEGIN
OPEN res FOR SELECT * FROM employee;
END getAll;
END pkg_test;
我的实体是:
package com.stefanocapra.plsql.entities;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.NamedStoredProcedureQueries;
import javax.persistence.NamedStoredProcedureQuery;
import javax.persistence.ParameterMode;
import javax.persistence.StoredProcedureParameter;
import antlr.collections.List;
@Entity
@NamedStoredProcedureQueries({
@NamedStoredProcedureQuery(
name = "getAll",
procedureName = "pkg_test.getAll",
resultClasses = Employee.class,
parameters = {
@StoredProcedureParameter(mode = ParameterMode.REF_CURSOR, type = void.class)
})
})
public class Employee {
@Id
@Column(name = "employee_id")
private Long id;
@Column(name = "first_name")
private String firstName;
@Column(name = "last_name")
private String lastName;
@Column(name = "salary")
private String salary;
@Column(name = "department_number")
private String departmentNumber;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getSalary() {
return salary;
}
public void setSalary(String salary) {
this.salary = salary;
}
public String getDepartmentNumber() {
return departmentNumber;
}
public void setDepartmentNumber(String departmentNumber) {
this.departmentNumber = departmentNumber;
}
@Override
public String toString() {
return "name = " + this.getFirstName() +
" - last name = " + this.getLastName() +
" - salary = " + this.getSalary();
}
}
如果我使用以下方式调用该过程: List<Employee> employees = repository.getAll();
,列表始终为空对象。
我已经检查过了,程序正在运行。
员工表是:
EMPLOYEE_ID NUMBER(19)
FIRST_NAME VARCHAR2(255)
LAST_NAME VARCHAR2(255)
工资 VARCHAR2(255)
DEPARTMENT_NUMBER VARCHAR2(255)
最佳答案
从我在网上看到的有关这件事的各个页面来看,hibernate 不支持引用游标。 Hibernate 给了我这个异常(exception):
“REF_CURSOR 参数应通过结果访问;嵌套异常为 org.hibernate.procedure.ParameterMisuseException:REF_CURSOR 参数应通过结果访问”
我能够通过做这样的事情来让事情正常运转。
EntityManager entityManager = entityManagerFactory.createEntityManager()
StoredProcedureQuery query = entityManager.createStoredProcedureQuery("SCHEMA.PROC_NAME", MyObject.class)
query.registerStoredProcedureParameter(1, String.class, ParameterMode.IN)
query.registerStoredProcedureParameter(2, String.class, ParameterMode.IN)
query.registerStoredProcedureParameter(3, MyObject.class, ParameterMode.REF_CURSOR)
query.setParameter(1, "parameter1")
query.setParameter(2, "parameter2")
query.execute()
List<MyObject> results = query.getResultList()
关于java - JPA 实体的 Oracle OUT SYS_REFCURSOR 始终为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58910472/
我会打电话 procedure或 function从 java 使用 JDBC . 在最佳实践和性能方面,最好使用 function返回 SYS_REFCURSOR或使用 procedure返回 SY
我可以使用普通游标的值打开 sys_refcursor 吗? create or replace procedure test(C1 out sys_refcursor) Lv_c1 as
我可以使用普通游标的值打开 sys_refcursor 吗? create or replace procedure test(C1 out sys_refcursor) Lv_c1 as
CREATE OR REPLACE PROCEDURE GetEmployeesInDept( c OUT SYS_REFCURSOR) 我有一个与上述存储过程相关的查询,也就是说,在定义光标
甲骨文 11g 这似乎比它应该的更难,所以我可能在这里走错了路。 我有一个生成用户定义表单的应用程序,我的数据比这更复杂,但想法是——我有一个数据表,其中包含从用户定义的表单输入的所有数据 creat
我有一个带有选择值的游标,我想在取决于我是否找到任何行之后做一些事情。 recs_Table SYS_REFCURSOR; begin open recs_Table for s
我有点被困在这里了。我在 Oracle 中有一个愚蠢的小函数,并尝试用 Java 访问它。返回值应该是 SYS_REFCURSOR。但如果我尝试用 Java 调用它,就会出现错误。 这是 Oracle
下面的 W.r.t 代码我不能将 fetch-into-variable 的类型声明为基础表的 %ROWTYPE,因为 SYS_REFCURSOR 位于连接两个表的选择上,并且还选择了一些在基础两个表
我正在使用 Oracle 12c。在 PL/SQL 我可以做到这一点 set serveroutput on declare begin for x in (select 1 as y from
所以我有一个存储过程ONE create or replace PROCEDURE ONE ( A in number B in number ... ZZ out SYS_R
我正在使用 Oracle 12g,并尝试从 SYS_REFCURSOR 获取 ResultSet 我有一个带有以下签名的过程: CREATE OR REPLACE PROCEDURE proc_sea
这可能有点傻,但我想知道这是否可能。 我有一个返回 sys_refcursor 的函数 CREATE OR REPLACE FUNCTION get_employee_details(p_emp_no
我正在尝试通过 Entity Framework 访问 Oracle 11g 上的存储过程。我可以访问返回标量和返回正确值的存储过程。但是当使用 SYS_REFCURSOR 用于返回结果集,函数导入时
我有一个 PL/SQL 包,它根据您传递的 id 返回一个 sys_refcursor。我想遍历一些 id 并创建一个新的 ref 游标,其中包含为每个 id 重复的原始结果集中的一列。 (类似于交叉
我的包体中有一个过程: create or replace package body MYPACKAGE is procedure "GetAllRules"(p_rules out
我正在尝试使用 PLSQL 存储过程获取行,并将它们保存到 JPA 实体中。我正在使用ojbdc7 , spring-boot-starter-data-jpa和spring-boot 2.2.1 .
我的包体中有一个过程: create or replace package body MYPACKAGE is procedure "GetAllRules"(p_rules out
是否可以在 plsql 中执行动态 sql 并将结果返回到 sys_refcursor 中?到目前为止,我已经粘贴了我的尝试,但无法正常工作,这是我通过我的 java 应用程序遇到的错误 ORA-01
我想使用 JPA 调用带有 SYS_REFCURSOR 的过程,如 OUT 参数。使用普通 JDBC 非常容易,但我不确定这在 JPA 中是否可行。 我的程序如下: CREATE OR REPLACE
我有一个像这样的(简化的)Oracle SQL: declare xd number; xm number; DataOut sys_refcursor; begin xd := to
我是一名优秀的程序员,十分优秀!