Java 使用select中的%rowtype,然后使用sys\U REF光标进行输出。 @Entity @Table(name = "BOOKING", schema = "QMS_MODEL") @NamedNativeQueries({ @Na

Java 使用select中的%rowtype,然后使用sys\U REF光标进行输出。 @Entity @Table(name = "BOOKING", schema = "QMS_MODEL") @NamedNativeQueries({ @Na,java,oracle,hibernate,cursor,Java,Oracle,Hibernate,Cursor,使用select中的%rowtype,然后使用sys\U REF光标进行输出。 @Entity @Table(name = "BOOKING", schema = "QMS_MODEL") @NamedNativeQueries({ @NamedNativeQuery(name = "booking.callNext.Oracle", query = "call GET_BOOKING(?,:bookingId)", callable = true, re

使用select中的%rowtype,然后使用sys\U REF光标进行输出。
@Entity
@Table(name = "BOOKING", schema = "QMS_MODEL")
@NamedNativeQueries({    
    @NamedNativeQuery(name = "booking.callNext.Oracle",
    query = "call GET_BOOKING(?,:bookingId)",
    callable = true,
    resultClass = Booking.class)
})
public class Booking implements Serializable {
..
..
}
long bookingID=...some value
Query q = entityMng.createNamedQuery("booking.callNext.Oracle");
q.setParameter("bookingId", bookingID);
List results = q.getResultList();
if (results!=null && !results.isEmpty()) {
  Booking eBooking = (Booking) results.get(0);
  ..
  ..
  ..
  ..i want use some booking data here....
  ..but i can't because the cursor is closed
}
CREATE OR REPLACE PROCEDURE GET_BOOKING  
 (      refCursorValue OUT SYS_REFCURSOR,     
        bookingId IN QMS_MODEL.booking.id%type   ) 
AS     
     rowids dbms_debug_vc2coll;
begin
     update  qms_model.booking bb  
     set     bb.call_time = sysdate
     where bb.id = bookingId 
     returning rowidtochar(rowid) bulk collect into rowids;

     open refCursorValue for
         select * 
         from qms_model.booking bbto
         where rowid in ( select chartorowid(column_value) from table(rowids));
end;
/