感謝,併爲MI英語遺憾:S尋呼原生SQL查詢中JPA與Hibernate沒有錯誤的關注
我使用JPA 2.0與Hibernate 4.X做一些SQL本機查詢。特碼是很簡單的:
private void doIt() throws Exception {
EntityManager em = getEntityManager();
Query q = em.createNativeQuery("A very simple native query, which return no entities, but collections of arrays");
q.setFirstResult(0);
q.setMaxResults(5);
Collection<Object> results = q.getResultList();
System.out.println("1"); //Means page 1
for (Object elem : results) {
String line = "";
Object[] row = (Object[]) elem;
for (Object object : row) {
if(object==null){
object="null";
}
line += object +"("+object.getClass()+")"+ ",";
}
System.out.println(row.length + " " + line);
}
em = getEntityManager();
q = em.createNativeQuery("The same simple native query, which return no entities, but collections of arrays");
q.setFirstResult(5);
q.setMaxResults(5);
results = q.getResultList();
System.out.println("2"); //Means page 2
for (Object elem : results) {
String line = "";
Object[] row = (Object[]) elem;
for (Object object : row) {
if(object==null){
object="null";
}
line += object +"("+object.getClass()+")"+ ",";
}
System.out.println(row.length + " " + line);
}
em = getEntityManager();
q = em.createNativeQuery("The same simple native query, which return no entities, but collections of arrays");
q.setFirstResult(10);
q.setMaxResults(5);
results = q.getResultList();
System.out.println("3"); //Means page 3
for (Object elem : results) {
String line = "";
Object[] row = (Object[]) elem;
for (Object object : row) {
if(object==null){
object="null";
}
line += object +"("+object.getClass()+")"+ ",";
}
System.out.println(row.length + " " + line);
}
}
我的結果是這樣的:
1
data1,data2,...,data-n -->I need this output
data1,data2,...,data-n
data1,data2,...,data-n
data1,data2,...,data-n
data1,data2,...,data-n
2
data1,data2,...,data-n,6 -->OMG! lol
data1,data2,...,data-n,7
data1,data2,...,data-n,8
data1,data2,...,data-n,9
data1,data2,...,data-n,10
3
data1,data2,...,data-n,11
data1,data2,...,data-n,12
data1,data2,...,data-n,13
data1,data2,...,data-n,14
data1,data2,...,data-n,15
總之,在第一頁的輸出有每行n項(這是我所希望輸出),但第二第三頁有n + 1個項目,而附加項目似乎是所帶行的編號。
有人發生過同樣的事情嗎?我在Hibernate的文檔中搜索過,但是我無法解決這個「有趣:@」的問題。
此代碼與Toplink一起執行,它沒有問題。
非常感謝! :)