[JPA] Querydsl에서 (group_concat) MySql 특수함수 사용하기
2022. 11. 18. 15:03ㆍWeb/JAVA
1. MySql 환경에서 JPA + Querydsl 조합에서 group_concat을 사용하는 방법
- 아무런 설정 없이 Expressions.stringTemplate() 함수를 이용해서 group_concat 사용하는 경우 아래와 같은 에러발생
java.lang.IllegalArgumentException: No pattern found for GROUP_CONCAT
- SQLExpressions.groupConcat을 사용해서 group_concat을 사용하는 방법도 있지만, 해당 설정은 의존성과, 설정이 조금 복잡하기 때문에 Expressions.stringTemplate 기반으로 group_concat을 사용하는 방법
2. 설정 방법
public class MySqlCustomDialect extends MySQL8Dialect {
public MySqlCustomDialect() {
super();
registerFunction("group_concat",
new StandardSQLFunction("group_concat", new StringType())
);
}
}
- MySql 버전에 맞춰 Dialect을 확장해서 설정
spring:
jpa:
...
show-sql: true
database-platform: com.example.querydsl.config.MysqlCustomDialect
...
- application.yml 에 propertise 에 해당사항을 설정해주거나 DbConfig 자바클래스에서 설정을 해줍니다.
3. 사용 방법
- Expressions.stringTemplate("group_concat({0})", 컬럼명)
- QueryDsl 쿼리 부분에서 저렇게 호출해서 사용하면 된다!
'Web > JAVA' 카테고리의 다른 글
[Grafana] 그라파나에서 팀즈로 알람(alerting) 받기 (0) | 2022.11.28 |
---|---|
[JPA] AuditorAware을 사용하여 자동으로 등록/수정자 생성하기 (0) | 2022.11.21 |
[JPA] Hibernate5 네이밍 룰 변경해서 적용하기(Camel -> Snake) (0) | 2022.11.18 |
[JAVA] Enum 사용하여 DB에 값 저장하고 조회하기 (0) | 2022.11.18 |
[Java] Jackson을 활용한 데이터 변환(Json to Java Object) (0) | 2022.08.31 |