【发布时间】:2019-11-18 08:25:13
【问题描述】:
我正在尝试使用 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)
SALARY VARCHAR2(255)
DEPARTMENT_NUMBER VARCHAR2(255)
为什么?我该怎么办?
【问题讨论】:
-
解决了吗?我也面临同样的问题..
标签: java spring stored-procedures plsql