使用Envers查詢歷史資料

2021-08-30 10:14:23 字數 1948 閱讀 2836

用envers查詢歷史資料步驟:

auditreader auditreader = auditreade***ctory.get(sessionfactory.getcurrentsession());

//查詢account某個版本的歷史資料,結果集為accountimpl的list

auditquery query = auditreader.createquery().forentitiesatrevision(accountimpl.class, 2);

//查詢account的所有歷史資料

//第二個引數selectentitiesonly(結果集是否包含版本資訊):

//true 結果集為object陣列的list,object陣列中包含了accountimpl和版本資訊(時間,版本等)

//fasle 結果集為accountimpl的list

//第三個引數selectdeletedentities(是否查詢刪除操作的版本)

//auditquery query = auditreader.createquery().forrevisionsofentity(accountimpl.class, true, false);

a.addprojection(auditprojection projection)查詢欄位或統計

如:

查詢accout的name欄位可新增:

query.addprojection(auditentity.property("name"));
查詢name和password可新增:

query.addprojection(!auditentity.property("password"));
去除重複的name:

query.addprojection(!auditentity.property("name") .distinct()  );
統計年齡的最大值:

query.addprojection(!auditentity.property("age") .max()  );
b.add(auditcriterion criterion)新增限制條件

如:

查詢name為admin的account資訊可新增:

query.add(auditentity.property("name").eq("admin") );
c.addorder(auditorder order) 排序

如:

按name公升序新增:

query.add(auditentity.property("name").asc() );
d.結果集數量限制setfirstresult(int firstresult),setmaxresults(int maxresults) 如:

返回5條結果集:

query.setmaxresults(5)

結果集getresultlist()

單條資料getsingleresult()

如:

返回結果集:

query.getresultlist();

完成歷史資料查詢心得

這是來睿通所做的第乙個專案,在正式真槍實彈上手之前組長讓我用兩個星期來學習專案中要使用但我不熟悉的一些知識。etmvc的基礎知識這裡就不囉嗦了,我就說說我沒有注意到的地方 在正式做歷史資料查詢功能時,看到以前同事所寫的如下 看的本人一頭霧水,無奈之下向組長求助 colums.put hicode c...

歷史資料轉移

作用 歷史資料轉移 兩種方法 方法1.重建表 方法2.歷史資料匯入其他表 李海軍 2009.11.12 方法1.重建表 exec sp rename taga talkin record back taga talkin record back delafter3mon 修改表名 grant all...

mysql歷史資料 mysql 歷史資料表遷移方案

當業務執行一段時間後,會出現有些表資料量很大,可能對系統效能產生不良的影響,常見的如訂單表 登入log表等,這些資料很有時效性,比如我們一般很少去查上個月的訂單,最多也就是報表統計會涉及到。在我們的資料庫中,使用者登入表就是這種型別的表,一般而言,表中的資料是不可逆的,只有插入操作沒有刪除或者修改操...