java - 如何从 plsql 中的存储过程获取 java 代码中的结果集

标签 java oracle jpa stored-procedures plsql

我正在使用 MVC 模式 我有两个表:员工和地址

说, 员工就像

-------------------
Id  | Name   | DeptId
-------------------
101 | Jake   | 501  
102 | Donald | 502

我有一张 Department 表,例如

-----------------------------
DeptId | Name | Description
-----------------------------
501    | IT   | software assistance  
502    | HR   | Human resources

现在因为我使用的是 MVC,所以这些表被映射到类 喜欢

@Table(name="Employee")
Class Employee{
   @Id
   @Column(name="Id")
   private Long id;

   @Column(name="Name")
   private String name;

   @Column(name="DeptId")
   private Long deptId;

   @ManyToOne
   @JoinColumn(name="DeptId", referencedColumnName="id", insertable=false,updatable=false)
   private Department dept;

   //getters and setters go here
}

和其他类部门(映射到部门表)

@Table(name="Department")
    Class Department{
       @Id
       @Column(name="Id")
       private Long id;

       @Column(name="Name")
       private String name;

       @Column(name="Description")
       private String description;

       //getters and setters go here
    }

注意 Employee 类引用了 Department 类的一个对象。 这个@ManyToOne 和@JoinColumn 注释帮助我们自动检索相应的部门对象和员工对象

直接在代码中查询很容易 但是如果我在我的代码中只使用过程或函数怎么办 我尝试了不同的方法,但似乎没有帮助

有时我会收到类似这样的错误 Cannot return resultset from a stored procedure in oracle 10g

谁能解释一下。我还必须使用 JNDI

我能否以返回我的方式从过程/函数中获取结果 List<Employee> (不是我自己必须整理成对象的原始结果集)。应该可以使用 hibernate no 吗?

谢谢

最佳答案

您的 PLSQL 需要返回 ref cursor .

JPA 2.1 支持将 CallableStatement 游标映射到实体。看这个answer .

关于java - 如何从 plsql 中的存储过程获取 java 代码中的结果集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35531541/

相关文章:

java - 无法执行“ALTER TABLE”,因为表不存在

java - 如何修改 Java 存储过程中的 oracle.sql.ARRAY 参数?

java - 如何从 HTML 文件添加或调用 java 代码?

java - 如何使用另一个数组中的对象初始化新数组(我获取地址,而不是值)

c# - 如何使用 Oracle Entity Framework 支持强制使用 pascal 大小写?

sql - 关于数据库事务中不同隔离级别的一些说明?

java - 如何使用JPA查询方法从表中选择两列的所有数据

java - MySQL + JDBC updateBlob 和 updateBinaryStream 抛出 NotUpdateable

java - 尝试使用 Java 更新 SQL 表

java - 检查 javax.persistence.TypedQuery ResultSet 是否有更多结果