如何使用JPA或JDBC使用REF_CURSOR调用PL / SQL功能

问题描述 投票:0回答:1

我已经在PL / SQL中创建了函数,该函数返回模式中所有表的名称。

CREATE OR REPLACE FUNCTION dbINFO
return sys_refcursor AS 
table_info sys_refcursor;
begin
    open table_info
        for select table_name from all_tables where owner = 'HOMEUSER';

        return table_info;
end;

我想使用JDBC或可能的JPA调用它。

我该怎么办?我几乎尝试了所有步骤,但没有结果。

java spring oracle jpa jdbc
1个回答
0
投票

在您的任何实体类上创建命名的本机查询。

@NamedNativeQuery(name="getAllTablesOwnedByHomeUser",
callable=true , query = "{? = call dbINFO()}",
resultClass = Pojo.class) //Pojo is class whch u r using 2 map resltset.


 //Field name in Pojo class and Table columns name should match which are returned 
   // by the cursor

现在使用如下所示的EntityManager调用命名查询。

  EntityManager em = entityManagerFactory.createEntityManager();
em.getTransaction().begin();
TypedQuery<Pojo.class> q = em.createNativeQuery("getAllTablesOwnedByHomeUser",Pojo.class);
List<Pojo> tables = q.getResultList();
em.getTransaction().commit();
em.close();
© www.soinside.com 2019 - 2024. All rights reserved.