Querydsl을 이용해서 개발을 하다가
"java.time.LocalDateTime is not compatible with java.lang.String" 에러가 발생했다.
이 에러가 발생했던 이유로는, 조회했던 Entity의 컬럼이 LocalDateTime 타입이었는데, DTO에 매핑시키려고 했던 필드의 타입은 String이어서 발생했었다. DTO 필드 형태를 바꿔주면 간단히 해결되지만, 나는 외부 솔루션을 연동하기 때문에, 어쩔 수 없이 String으로 넘겨주어야했다. 따라서 조회할 때 LocalDateTime을 String으로 변환을 해줘야하는데, 찾아보니Querydsl에서 지원하는 Expressions와 MySQL의 DATE_FORMAT이라는 함수에 변환해줄 String 형식을 지정하면 바꿀 수 있었다. 내가 변환을 한 코드는 다음과 같다.
Expressions.stringTemplate(
"DATE_FORMAT({0}, '%Y%m%d%H%i%s')",
popUpStoreEntity.startDt
).as("startDt"),
Expressions.stringTemplate 메서드에서 {0}은 첫 번째 인자를 하고, 이 경우, popUpStoreEntity.startDt가 {0}에 해당한다.이 이 값을 ' yyyyMMddHHmmss ' 형태로 변경한다는 의미이다. 참고로, stringTemplate 메서드는 SQL 템플릿을 생성하며, {0}, {1} 등의 플레이스홀더를 사용하여 인자를 삽입할 수 있다.
'개발기록(feat.삽질)' 카테고리의 다른 글
| Pageable 동작 방식 (2) | 2025.01.03 |
|---|---|
| JPA Bulk Insert (1) | 2024.12.13 |
| Jackson사용 시 primitive boolean주의점 (0) | 2024.08.19 |
| JPA Union 및 Enum 사용 (feat.네이티브 쿼리, SpEL) (0) | 2024.07.12 |
| git add, commit, push (0) | 2024.07.09 |