用原生sql查詢返回實體對象的方法


最近由於需求變更,客戶需要在原來的查詢基礎上加上一個判斷條件,但是這個判斷條件所在的實體跟原來的查詢實體沒有直接關聯。為了不影響原來的查詢結果,改為用原生SQL,使用left join來關聯查詢。為了不改變對查詢結果的處理邏輯,將查詢結果封裝成原來的對象進行操作。具體操作方法如下: 
1.基於JPA規范的程序: 
Query query = entityManager.createNativeQuery("select id, name, age from t_user"); 
  query.unwrap(SQLQuery.class).setResultTransformer(Transformers.aliasToBean(clazz)); 
  //  其中clazz為封裝對象的class
  List rows = query.getResultList(); 
  2.基於Session的程序: 
sess.createSQLQuery("SELECT NAME, BIRTHDATE FROM CATS").setResultTransformer(Transformers.aliasToBean(clazz)); 
這兩種方法需要注意的是查詢的字段的別名需要跟clazz的屬性對應。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM