如何从plsql中的存储过程获取java代码中的结果集
我正在使用MVC模式 我有两张表:雇员和地址 说, 员工就像如何从plsql中的存储过程获取java代码中的结果集,java,oracle,jpa,stored-procedures,plsql,Java,Oracle,Jpa,Stored Procedures,Plsql,我正在使用MVC模式 我有两张表:雇员和地址 说, 员工就像 ------------------- Id | Name | DeptId ------------------- 101 | Jake | 501 102 | Donald | 502 我有一张部门的桌子,像 ----------------------------- DeptId | Name | Description ----------------------------- 501 | IT |
-------------------
Id | Name | DeptId
-------------------
101 | Jake | 501
102 | Donald | 502
我有一张部门的桌子,像
-----------------------------
DeptId | Name | Description
-----------------------------
501 | IT | software assistance
502 | HR | Human resources
现在,因为我使用的是MVC,所以这些表映射到类
像
和其他类部门(映射到部门表)
请注意,Employee类引用了Department类的对象。
此@ManyToOne和@JoinColumn注释帮助我们自动检索相应的部门对象和员工对象
直接在代码中查询很容易
但是,如果我在代码中只使用过程或函数,怎么能做到这一点呢
我尝试过不同的方法,但似乎没有帮助
有时我会犯类似这样的错误
无法从oracle 10g中的存储过程返回结果集
谁能澄清一下吗。我还必须使用JNDI
我是否可以从过程/函数中获取结果,使其返回我的列表
(不是我自己必须整理成对象的原始结果集)。应该可以使用hibernate no?
谢谢我正在编写伪代码(不是工作示例)。但它应该可以解决您的问题
Oracle
CREATE OR REPLACE PROCEDURE getEmployees(deptName varchar(20))
BEGIN
SELECT * FROM Employee where DeptId in ( select DeptId from Department where Name =deptName );
END;
/
Query query = session.createSQLQuery(
"CALL GetStocks(:getEmployees)")
.addEntity(Employee.class)
.setParameter("deptName", "Production");
List result = query.list();
for(int i=0; i<result.size(); i++){
Employee emp = (Employee)result.get(i);
System.out.println(emp.toString());
}
休眠
CREATE OR REPLACE PROCEDURE getEmployees(deptName varchar(20))
BEGIN
SELECT * FROM Employee where DeptId in ( select DeptId from Department where Name =deptName );
END;
/
Query query = session.createSQLQuery(
"CALL GetStocks(:getEmployees)")
.addEntity(Employee.class)
.setParameter("deptName", "Production");
List result = query.list();
for(int i=0; i<result.size(); i++){
Employee emp = (Employee)result.get(i);
System.out.println(emp.toString());
}
Query Query=session.createSQLQuery(
“调用GetStocks(:getEmployees)”)
.附录(员工类别)
.setParameter(“部门名称”、“生产”);
列表结果=query.List();
对于(inti=0;i您的PLSQL需要返回一个
JPA 2.1支持将CallableStatement out游标映射到实体。请参见此图。对不起!我需要选择员工,而不是部门!每个员工都映射到一个部门,因为deptId列。我希望在员工的“dept”字段中对应部门的对象。如果在java代码中使用查询,这很简单,但不是那么容易如果是程序,我想修改了伪代码。你需要尝试一下