고도화한 DAO의 JdbcTemplate.queryForObject() 메서드를 사용할 때 EmptyResultDataAccessException이 발생
@Repository
public class ImageDAO2 {
private final String SELECTONE = "SELECT IMAGE_ID, PATH, BOARD_NUM FROM IMAGE WHERE BOARD_NUM=? ORDER BY IMAGE_ID DESC LIMIT 1";
private final String INSERT = "INSERT INTO IMAGE (PATH,BOARD_NUM) VALUES(?,?)";
@Autowired
private JdbcTemplate jdbcTemplate;
private List<ImageDTO> selectAll(ImageDTO imageDTO){
return null;
}
public ImageDTO selectOne(ImageDTO imageDTO) {
Object[] args = {imageDTO.getBoard_num()};
return jdbcTemplate.queryForObject(SELECTONE, args, new FileRowMapper());
}
}
현재 image 테이블은 완전 비어있는 상태임
- 쿼리 실행: SELECT IMAGE_ID, PATH, BOARD_NUM FROM IMAGE WHERE BOARD_NUM=? ORDER BY IMAGE_ID DESC LIMIT 1
- 결과 없음: 현재 IMAGE 테이블에 데이터가 없기 때문에 쿼리 결과가 없음
- 예외 발생: 결과가 없으면 queryForObject()가 EmptyResultDataAccessException 예외 발생
public ImageDTO selectOne(ImageDTO imageDTO) {
Object[] args = {imageDTO.getBoard_num()};
ImageDTO image = new ImageDTO();
try {
image = jdbcTemplate.queryForObject(SELECTONE, args, new FileRowMapper());
}
catch (EmptyResultDataAccessException e) {
// 결과가 없을 때 null 처리
image = null;
}
return image;
}
try - catch 로 해결
'javaboiii의 Error | Exception' 카테고리의 다른 글
Exception - com.mysql.cj.jdbc.exceptions.MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transaction (0) | 2024.10.23 |
---|---|
Error - 400에러 (0) | 2024.10.22 |
Exception - org.springframework.aop.AopInvocationException (0) | 2024.10.16 |
Error - HTTP 상태 415 - 지원되지 않는 Media Type (0) | 2024.10.12 |
ERROR - 405 허용되지 않는 메소드 (1) | 2024.10.10 |