我已经在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调用它。
我该怎么办?我几乎尝试了所有步骤,但没有结果。
在您的任何实体类上创建命名的本机查询。
@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();