最近由於需求變更,客戶需要在原來的查詢基礎上加上乙個判斷條件,但是這個判斷條件所在的實體跟原來的查詢實體沒有直接關聯。為了不影響原來的查詢結果,改為用原生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的屬性對應。
jdbc查詢資料庫返回實體物件集合
最近做prefuse中用到原始的資料庫查詢 try system.out.println manage key manage key string sql select from layout where device name m text and manage key manage key li...
原生的多表查詢返回並處理
public listorderexportlist orderitems items,queryvariablevo qv,int starpos,int pagesize if stringutil.isnull items.getorders getmemberusername if stri...
EXCEL錶用SQL查詢的BUG
當excel的表中某一列資料,數字記錄多於文字記錄時即會預設該列為數字列,則文字記錄就顯示不出來,而文字多於數字記錄時,數字就顯示不出來.excel一般是通過前8行的資料來判斷該列的資料型別,當然這個值是可以通過登錄檔進行修改的.步驟如下 1,在執行中輸入regedit進入登錄檔編輯器 2.進入hk...