我在使用 Spring Data JPA 从存储过程中获取多个结果集时遇到问题。我有一个返回两个结果集的存储过程:一个用于
Employees
,另一个用于 Departments
。但是,我无法正确获取这些结果集。这是我到目前为止所做的:
这是我的存储过程的 SQL 代码:
DELIMITER //
CREATE PROCEDURE SearchEmployees()
BEGIN
SELECT * FROM Employees;
SELECT * FROM Departments;
END //
DELIMITER ;
员工实体:
@Entity
@Table(name = "Employees")
@Setter
@Getter
@NamedStoredProcedureQuery(
name = "EmployeeDeptProc",
procedureName = "SearchEmployees",
resultClasses = {
Employee.class, Department.class
}
)
public class Employee {
@Id
private Integer EmployeeID;
private String FirstName;
private String LastName;
@ManyToOne
@JoinColumn(name = "DepartmentID")
private Department DepartmentID;
private String Position;
private LocalDate HireDate;
private BigDecimal Salary;
}
部门实体:
@Entity
@Table(name = "Departments")
@Setter
@Getter
public class Department {
@Id
private Integer DepartmentID;
private String DepartmentName;
}
@Repository
public interface EmployeeRepository extends JpaRepository<Employee, Integer> {
@Procedure(procedureName = "SearchEmployees")
List<Object> getEmployees();
}
public List<Object> getEmployeeData() {
return employeeRepository.getEmployees();
}
当我从控制器调用
getEmployeeData()
方法时,我只获得第一个结果集 (Employees
)。我无法检索第二个结果集 (Departments
)。
我检查过的事情:
我在
application.properties
中指定物理命名策略为:
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
我已验证存储过程在数据库中是否正确定义。 我发现了许多最新的技术,只能获得一个结果集,但不能获得许多不同的结果集。如果我使用实体管理器,我也无法获取多个结果集。 任何帮助或指导将不胜感激!
如何使用 Spring Data JPA 从存储过程中正确获取多个结果集?
有更好的方法来处理这种情况吗?
通过使用最新的 JPA 技术。您能否请您了解最新的 Spring Boot 中用于实时项目的一些技术。
Hibernate 中无法访问第二次选择的结果。