작성
·
340
0
public class Customer {
@Id
@GeneratedValue
@Column(name = "customer_id")
private Long id;
private String firstName;
private String lastName;
private LocalDate birthDate;
}
@JpaCursorItemReader
@Bean
public ItemReader<Customer> customerJpaItemReader() {
HashMap<String, Object> paramMap = new HashMap<>();
paramMap.put("firstname", "%customer0");
return new JpaCursorItemReaderBuilder<Customer>()
.name("jpaCursorItemReader")
.entityManagerFactory(emf)
.queryString("select c from Customer c")
.maxItemCount(100)
.currentItemCount(10)
.build();
}
@JpaCursorItemReader 실행 결과
pk값이 정상적으로 맵핑되서 올라옵니다.
@JdbcPagingItemReader
return new JdbcPagingItemReaderBuilder<Customer>()
.name("JdbcPagingItemReaderJob")
.dataSource(dataSource)
.pageSize(10)
.beanRowMapper(Customer.class)
.fetchSize(CHUNK_SIZE)
.currentItemCount(0)
.maxItemCount(100)
.selectClause("first_name, last_name, birth_date, customer_id")
.fromClause("from Customer")
.sortKeys(sortKey)
.build();
}
@JdbcPagingItemReader 실행 결과
실행 결과 : Id값만 짤려서 올라옵니다.
답변 1
0
보다 정확한 테스트를 위해 소스 공유 부탁드립니다.
실제 제가 소스를 돌려보면 정상적으로 결과가 나오는 경우가 많기 때문에 질문자분께서 테스트 한 소스 그대로를 실행해 봐야 될 것 같습니다.
바쁘실텐데 감사합니다!
아래에 SQL Injection / 엔티티 클래스 / JdbcCursorItemReaderConfig 클래스 / JpaPagingItemReaderConfig 클래스를 공유해드립니다. 강사님처럼 제가 SQL 스크립트를 작성해서 넣을 줄 몰라, JPA로 SQL Injection 컨트롤러 이용해서 웹 요청 올 때마다 엔티티 생성해서 DB에 밀어넣었습니다.
아래 클래스에서 JpaPagingItemReader 활성화 후 Job 수행하면 id값이 읽히는데, JdbcCursorItemReaderConfig는 id값이 읽히지 않습니다!
@SQL Injection 위한 컨트롤러
@SQL Injection 위한 Repository
@Entity 클래스
@JdbcPagingItemReader 테스트 위한 Config 클래스
@JpaCursorItemReader 테스트 위한 Config 클래스