2013-03-21 5 views
1

내 Spring MVC 프로젝트에서 조건 API를 사용하여 최대 절전 모드를 사용하고 있습니다. 그룹 BY 및 순서 BY 절을 적용하고 있습니다. 쿼리가 성공적으로 DB에서 실행 얻을하고 또한 결과를 제공하지만, 여기에 객체를 클래스 객체로 변환

Object--

의 그것의 배열입니다 내가 List<DashboardSubindicatorSubmission>criteria.list() 캐스팅 만하고

Criteria criteria = session.createCriteria(DashboardSubindicatorSubmission.class, "DashboardSubindicatorSubmission") 
       .setProjection(Projections.projectionList() 
         .add(Projections.sum("InputValue").as("InputValue")) 
         .add(Projections.groupProperty("fkAccademicYearId")) 
         .add(Projections.groupProperty("fkAssessmentPlanID")) 
         .add(Projections.groupProperty("fkSubindicatorID")) 
         .add(Projections.groupProperty("InputTitle"))) 
       .addOrder(Order.asc("fkAccademicYearId")) 
       .addOrder(Order.asc("fkAssessmentPlanID")) 
       .addOrder(Order.asc("InputTitle")); 
     List<DashboardSubindicatorSubmission> dashboardSubindicatorSubmissionList = (List<DashboardSubindicatorSubmission>)criteria.list(); 
     session.flush(); 
     transaction.commit(); 
     return dashboardSubindicatorSubmissionList; 

기준 API의 코드 난에 dashboardSubindicatorSubmissionList.get(i)을하려고 할 때 컨트롤러 그것은 나를 java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to mkcl.accreditation.model.DashboardSubindicatorSubmission 예외를 제공합니다. 나는 그것이 나에게 DashboardSubindicatorSubmission의 객체를 반환하기 때문에 여전히 object[] 그게 전부의 그것의리스트입니다 왜 내가 dashboardSubindicatorSubmissionList.get(i)을 질수 List<DashboardSubindicatorSubmission>에 캐스팅 있어요하지만

은 내가, 그것을 알게. (내가 틀렸다면 수정하십시오)

그럼 결과를 DashboardSubindicatorSubmission 클래스 목록으로 변환 할 수 있습니까? 이 경우 setResultTransformer()가 도움이됩니까?

답변

0

두 가지 옵션이 있습니다. 투영법을 사용할 때, Hibernate는 각 필드의 이름을 사용하여 객체를 만들고 그 이름을 아직 모르기 때문에 각 필드를 존중하는 방법을 모른다.

따라서 첫 번째 옵션은 개체 속성의 이름과 일치하도록 그룹화 된 필드의 이름을 지정하는 것입니다. 투영에 사용하는 문자열이 이미 객체 필드의 이름 인 경우에도 필요합니다. 같은 뭔가 :

.add(Projections.groupProperty("fkAccademicYearId"), "fkAccademicYearId") // same value 
.add(Projections.groupProperty("fkAssessmentPlanID"), "other") // other value 

두 번째 옵션은, 당신 자신이 무엇을 제안 할의 ResultTransformer 당신 자신의 구현을 만드는 것입니다. 보고서를 만들 때처럼이 쿼리의 다른 개체를 추출하려면이 옵션을 선택하는 것이 좋습니다.

관련 문제