2013-04-29 2 views
0

좋아들 드디어 붙어있어 GORM 기준 API 구현이 문제에 직면 :Grails 기준 : 그룹화 된 하위 쿼리의 결과를 계산하는 방법은 무엇입니까?

내가 검색하는 것입니다 여기에 필요한 것은
class MyView implements Serializable { 
    Long idA 
    Long idB 
    Long colA1 
    String colA2 
    String colA3 
    String colB1 
    String colB2 

    static mapping = { 
     id composite: ['idA', 'idB'], generator: 'assigned' 
    } 
} 

/필터 :이 같은 매핑 오라클 볼 수있어

을 에 대한 가능성이 도메인을 통해

colA1, colA2, colA3, colB1, colB2

하지만 효과적으로 F 필요 의 구별/그룹화 된 결과 집합을 에칭 :

colA1, colA2, colA3 연관된 요청에

은 페이징을 위해, I 페치해야 페치 값

  • 카운트
  • 정의 된 일부 필터링 된 결과

문제는 집계와 그룹화에 있습니다. 다음과 같은 요청을 작성하는 경우 :

MyView.withCriteria({ 
    projections { 
     groupProperty('colA1') 
     groupProperty('colA2') 
     groupProperty('colA3') 
    } 

    // ... Restrictions on MyView properties 
}) 

관련 결과를 얻으려면 어떤 트릭이 필요하십니까? 나는 Hibernate-criteria API에 많은 제한을 보았고, 나는 아이디어가 없어서 당신의 도움에 정말로 감사 할 것입니다! :-)

답변

0

좋아, 결국 마침내 내 문제를 알아 냈고 짧은 대답은 다음과 같을 것이다. 나는 할 수 없다.

사실 내 결과를 그룹화하고 이들을 계산해야합니다. 성능 측면에서는 끔찍하지만, "그룹"요청을 select count(*)으로 묶어서 처리해야합니다. HQL 서브 쿼리는 조항 선택 또는 어디에서 발생할 수

참고 :

하지만, 여기에 무엇 hibernate says 문서입니다.

그래서 내가 필요한 것은 최대 절전 모드을 사용하여 을 사용할 수 없습니다.

심각한 성능 문제를 피하기 위해 구체화 된보기를 기반으로 한 더 나은 모델링을 의미하는 무거운 변경 사항으로 문제를 해결했습니다.

관련 문제