티스토리 뷰
spring batch 에서 JdbcPagingItemReader 를 이용해서 데이터를 조회하는 코드를 작성했다. 이후 배치 잡을 실행했는데 아래와 같은 에러 메세지와 함께 잡이 실패했다.
Column 'column4' not found.; nested exception is java.sql.SQLException: Column 'column4' not found.
column4 는 임의로 이름을 바꾼거고, 실제로 존재하는 컬럼명을 넣었었다. 혹시 컬럼명에 오타가 있는건가 해서 오타도 확인해보고, 실제로 쿼리를 직접 SQL 에서 실행할때는 잘 돌아가는 것까지 확인했다.
JdbcPagingItemReader 를 만드는 코드도 일반적인 관례를 따랐으며, QueryProvider 를 이용했다.
SqlPagingQueryProviderFactoryBean queryProvider = SqlPagingQueryProviderFactoryBean()
queryProvider.setDataSource(dataSource)
queryProvider.setSelectClause("SELECT column1, column2, column3")
queryProvider.setFromClause("FROM claim_progress")
queryProvider.setWhereClause("WHERE column4 = :condition")
queryProvider.setSortKey("column4")
몇 시간을 살펴보다가 해결법을 찾을 수 있었는데, column4 를 SELECT 절에 넣지 않았기 때문이다. 아래와 같이 column4 까지 넣어주면 문제가 해결된다.
queryProvider.setSelectClause("SELECT column1, column2, column3, column4")
위처럼 하면 문제는 해결되지만 원인이 궁금하다. 일단 에러가 나는 원인은 JdbcPagingItemReader 내 아래 코드 때문이다.
for 문 안을 보면 sortKey 를 이용해서 rs(ResultSet) 에서 값을 꺼내는걸 볼 수 있다. 하지만 sortKey 를 SELECT 컬럼에 넣어놓지 않았다면 가져올 값이 없을 것이고, 그 때문에 에러가 발생하는 것이다. 그럼 저 startAfterValues 는 뭐하는 것인가를 따라가보려 했는데 이미 너무 오랜 시간 삽집을 해서 나중에...
batch meta table 에 뭔가 데이터를 넣는 용도로 쓰고있는 것까지만 확인했다.
'Java > batch' 카테고리의 다른 글
spring batch 에서 사라진 JobBuilderFactory (0) | 2024.05.15 |
---|---|
Spring batch 테스트하기 (1) | 2022.05.28 |
spring-batch 에서 TaskExecutor 사용시 jvm 종료 안 되는 현상 (1) | 2021.05.02 |
JpaItemWriter 이용시 merge 로 인한 select 쿼리 발생 이슈 (4) | 2021.04.25 |
spring batch builder 설정 메서드 정리 (0) | 2021.04.18 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- toby
- http
- EffectiveJava
- frontend개발환경
- javascript
- clean code
- frontcode
- JPA
- TEST
- spring cloud
- mariadb
- Kotlin
- DesignPattern
- MySQL
- backend개발환경
- Jackson
- go-core
- Spring
- java8
- db
- generics
- servlet
- Git
- OOP
- java
- code
- Design Pattern
- JavaScript Core
- programming
- 정규표현식
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함