hibernate使用hql查詢有諸多不便,比如無法在from後面使用select子查詢,(貌似可以解決但是挺麻煩)
所以這裡記錄下自己找到的一些寫法
首先拿到session物件:
|- hibernatesessionfactory.getsession();
這個類是我找的乙個工具類,下面會附上工具**,直接丟裡面用就好了
最後在執行sql的時候有些不同
要使用session.createsqlquery 而不是session.createquery
返回乙個list的集合:
|- list list = session.createsqlquery(sql.tostring()).list();
注意:
這裡的list集合是object型別,如果想要其返回指定的型別需要做一些變動
返回指定型別的list集合
list list = session.createsqlquery(sql.tostring())
.addscalar("name")
.addscalar("amount",hibernate.double)
.addscalar("sum",hibernate.integer)
.setresulttransformer(transformers.aliastobean(實體.class)).list();
如果你要返回的資料並不多的話,直接addscalar 新增欄位的名稱和型別進去 ,string型別的資料是不需要加入型別引數的,最後將你需要得到的實體型別加進去
(感謝貢獻者!)
package com.ap.batch.util;
if needed.import org.hibernate.hibernateexception;
import org.hibernate.session;
import org.hibernate.cfg.configuration;
/** * configures and provides access to hibernate sessions, tied to the
* current thread of execution. follows the thread local session
* pattern, see .
*/public class hibernatesessionfactory
/*** returns the threadlocal session instance. lazy initialize
* thesessionfactory
** @return session
* @throws hibernateexception
*/public static session getanothersession() throws hibernateexception
return sessionfactory.opensession();
}public static session getsession() throws hibernateexception
session = (sessionfactory != null) ? sessionfactory.opensession()
: null;
threadlocal.set(session);
}return session;
}/**
* rebuild hibernate session factory**/
public static void rebuildsessionfactory() catch (exception e)
}/**
* close the single hibernate session instance.
** @throws hibernateexception
*/public static void closesession() throws hibernateexception
}/**
* return session factory**/
public static org.hibernate.sessionfactory getsessionfactory()
public static void setconfigfile(string configfile)
/*** return hibernate configuration**/
public static configuration getconfiguration()
}
hibernate 原生sql的使用
hql儘管容易使用,但是在一些複雜的資料操作上功能有限。特別是在實現複雜的報表統計與計算,以及多表連線查詢上往往無能為力,這時可以使用sql native sql 實現hql無法完成的任務。1 使用sql查詢 使用sql查詢可以通過兩種方式來實現 1 利用hibernate提供的sqlquery物件...
hibernate原生語句的使用,
一.查詢物件的所有字段 string sql select from jbpm processdefinition sqlquery sqlquey session.createsqlquery sql addentity processdefinition.class listprocessdef...
Django中使用原生Sql
在django中使用原生sql主要有以下幾種方式 一 extra 結果集修改器,一種提供額外查詢引數的機制 二 raw 執行原始sql並返回模型例項 三 直接執行自定義sql 這種方式完全不依賴model,前兩種還是要依賴於model 例項 使用extra 1 book.objects.filter...