0

我想使用Hibernate Projections屬性構建如下所示的查詢。有人可以檢查下面。我寫了類似的Java代碼。如何使用Hibernate標準和預測來構建查詢

DetachedCriteria dCriteria = DetachedCriteria.forClass(FinancialYearQuater.class, "FinancialYearQuater"); 
     dCriteria.add(Restrictions.eq("FinancialYearQuater.finYear", year)); 
     dCriteria.addOrder(Order.asc("finYear")); 
     dCriteria.setResultTransformer(Projections.distinct(Projections.property("id"))); 
     List<FinancialYearQuater> list = (List<FinancialYearQuater>) findAll(dCriteria); 

這裏的SQL查詢:

select 
distinct 
     this_.FINY_NAME, 
     this_.FINY_YEAR, 
     this_.QTR_NAME, 
     this_.QTR_NO, 
     this_.QTR_PERIOD 
    from 
     V_FINYR_QTR this_ 
    where 
     this_.FINY_YEAR=2016 
    order by 
     this_.FINY_YEAR asc 
+0

我格式化了代碼。添加了標籤。編輯問題的標題,更好地解釋問題的具體內容 – CocoNess

+0

您面臨的問題是什麼? – Sid

+0

我沒有面臨任何問題,但我的答案代碼適合從表中獲取不同的數據。我有點擔心,如果表中的數據很大,它會很慢。如果我可以在那裏改進,我正在尋找替代我的代碼。 –

回答

0

我已經寫了下面的代碼。這是正確的方式獲得獨特的數據嗎?

DetachedCriteria dCriteria = DetachedCriteria.forClass(FinancialYearQuater.class, "FinancialYearQuater"); 
     dCriteria.add(Restrictions.eq("FinancialYearQuater.finYear", year)); 
     ProjectionList projList = Projections.projectionList(); 
     projList.add(Projections.property("FinancialYearQuater.finYear"), "finYear"); 
     projList.add(Projections.property("FinancialYearQuater.finYearName"), "finYearName"); 
     projList.add(Projections.property("FinancialYearQuater.qtrNo"), "qtrNo"); 
     projList.add(Projections.property("FinancialYearQuater.qtrPeriod"), "qtrPeriod"); 
     dCriteria.setProjection(Projections.distinct(projList)); 
     dCriteria.addOrder(Order.asc("finYear")); 
     List<FinancialYearQuater> list = (List<FinancialYearQuater>) findAll(dCriteria);