0

Hibernate Projections 속성을 이용하여 아래와 같은 질의를 생성하고자한다. 누군가가 아래에서 확인할 수 있습니까? 나는 자바 코드를 작성했다.Hibernate Criteria와 Projections를 이용하여 질의를 작성하는 방법

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)); 
     dCriteria.addOrder(Order.asc("finYear")); 
     dCriteria.setResultTransformer(Projections.distinct(Projections.property("id"))); 
     List<FinancialYearQuater> list = (List<FinancialYearQuater>) findAll(dCriteria); 

다음은 SQL 쿼리입니다. 고유 한 데이터를 얻는 올바른 방법입니까?

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