0
簡單的Java批量使用JPA/Hibernate讀取數百萬行。我的問題是:如何通過ScrollMode.FORWARD_ONLY
識別中的最後結果?Hibernate - 使用ScrollMode.FORWARD_ONLY獲取ScrollableResults的最後一個元素
使用isLast()
方法它不是隻有前進滾動模式的選項,而使用ScrollMode.SCROLL_INSENSITIVE會降低批處理的性能。
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import org.hibernate.Query;
import org.hibernate.ScrollMode;
import org.hibernate.ScrollableResults;
import org.hibernate.Session;
import org.hibernate.StatelessSession;
StatelessSession statelessSession = ((Session) em.getDelegate()).getSessionFactory().openStatelessSession();
Query query = statelessSession.createSQLQuery("MY_QUERY")
.setReadOnly(true)
.setFetchSize(Integer.valueOf(1000));
ScrollableResults results = query.scroll(ScrollMode.FORWARD_ONLY);
while (results.next()) {
...
//I need to extract a timestamp from the last record here
}
你有沒有使用查詢,僅僅獲得考慮反而是最後的結果。 –
不,因爲我還需要其他行和一個額外的查詢,以便讓最後一個元素爲已經很重的批次添加太多開銷。 –