BE전문가 프로젝트
JPQL 함수 본문
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