BE전문가 프로젝트

JPQL 함수 본문

JPA

JPQL 함수

원호보고서 2022. 11. 8. 21:16

JPQL 기본 함수

  • CONCAT
  • SUBSTRING
  • TRIM
  • LOWER, UPPER
  • LENGTH
  • LOCATE
  • ABS, SQRT, MOD
  • SIZE, INDEX(JPA용도)

사용자 정의 함수

  • 하이버네이트는 사용전 방언에 추가해야한다.
  • 사용하는 DB방언을 상속 받고, 사용자 정의 함수를 등록한다.
SELECT function('group_concat', i.name) from Item i

각각의 DB에서 사용하는 함수들은 대부분 JPA에 등록이 되어있기 때문에 찾아보고 사용이 가능하다.

따라서 등록되어있지 않은 함수들은 위에서 사용한것 처럼 따로 정의를 해줘야 한다.

 

package dialect;

import org.hibernate.dialect.MySQL8Dialect;
import org.hibernate.dialect.function.StandardSQLFunction;
import org.hibernate.type.StandardBasicTypes;

public class MySqlDialect extends H2Dialect {

    public H2Dialect(){
        registerFunction("group_concat", new StandardSQLFunction("group_concat", StandardBasicTypes.STRING));
    }
}

현재 H2를 사용하고 있기 때문에 H2Dialect를 상속받을 후 정의해준다.

<property name="hibernate.dialect" value="dialect.H2Dialect"/>

persistence.xml에 정의해준다.

String query = "select function('group_concat', m.username) from Member m";

 

'JPA' 카테고리의 다른 글

JPQL - 페치 조인(fetch join)  (0) 2022.11.08
경로 표현식  (0) 2022.11.08
조건식(Case 식 등)  (0) 2022.11.07
JPQL 타입 표현  (0) 2022.11.07
서브쿼리  (0) 2022.11.07
Comments