2016-06-13 2 views
1

Grails 애플리케이션이 있습니다. 우리는 Oracle db 및 H2 db를 지원합니다.Grails의 H2 db와 함께 listAgg를 사용하십시오.

제품 환경에서 Oracle 11g DB와 H2 DB를 사용하고 있습니다. "listAgg"기능으로 최대 절전 모드 쿼리가 있습니다. 그것은 오라클에서 잘 작동합니다. 하지만 H2는이 기능을 지원하지 않습니다. H2에도이 기능을 사용하려면 어떻게해야합니까?

사용자 지정 방언을 통해 수행 할 수 있다고 생각합니다. 그러나 나는 어떻게 이해하지 못한다. 누구든지 자세히 설명 할 수 있습니까?

H2에는 listAgg와 유사한 'group_concat'함수가 있습니다. 'group_concat'이 listAgg 대신 H2DB에 사용되도록 응용 프로그램을 구성 할 수 있습니까?

Grails 2.3.11.

고맙습니다.

답변

0

LISTAGG은 오라클과 관련된 기능입니다. 다른 데이터베이스에서는 사용할 수 없습니다. 예를 들어 MSSQL에서 대안은 STUFF 함수를 사용할 수 있습니다.

H2에서 필요하면 Oracle에서 LISTAGG가 수행하는 것과 동일한 이름을 가진 사용자 정의 함수를 정의해야합니다. 자세한 내용은 http://www.h2database.com/html/features.html#user_defined_functions을 참조하십시오.

+0

응답 해 주셔서 감사합니다! 하지만 grails 및 hibernate와 함께 사용하기를 원한다. 원시 SQL이 아니다. –

+0

작동하지 않습니까? https://bhavikablog.wordpress.com/2012/12/07/adding-custom-function-in-hibernate-with-custom-dialects/ – droggo

+0

ListAgg oracle 함수의 'within'부분에 문제가 있습니다. 어떻게 정의 할 수 있습니까? –

관련 문제