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);