2013-07-26 50 views
0

我在這裏尋求一些建議。我想知道是否有理由不這樣做。衆所周知,僅僅因爲你可以做點什麼,並不意味着你應該這樣做。將getResultList投射到ResultSet

我正在使用的應用程序使用JPA與現有的表。哪裏可以,我們正在使用實體,但對於很多現有的SQL,我們正在使用原生查詢。在許多這些查詢中,我們不是返回實體,因此使用了本機查詢。所以,我在想,如果有一個理由不這樣做:

ResultSet rs = (ResultSet) em.createNativeQuery('NativeQueryString').getResultList(); 

while (rs.next()) { 
    person.setName(rs.getString('name')); 
    person.setHeight(rs.getString('height')); 
} 

我們現在正在做的是:

List results = em.createNativeQuery('NativeQueryString').getResultList(); 

for(Object result : results) { 
     Object [] items = (Object[]) result; 
     person.setName(items[0].toString); 
     person.setHeight(items[1].toString); 
    } 

還是有更好的方式來處理與JPA本機查詢?

回答

2

是否有原因不將JPQL本機查詢結果轉換爲JDBC ResultSet?因爲根據JPA規範,結果不是ResultSet,它根據返回的列數定義爲返回Object或Object []