에러일기

org.springframework.dao.EmptyResultDataAccessException

yn98 2024. 11. 3. 22:07

 

Spring + JDBC를 이용하여 개발 시에 queryForObject 메서드를 사용하여 하나의 객체만 가져올 경우 해당 데이터가 없으면 org.springframework.dao.EmptyResultDataAccessException 예외가 발생하게 된다.

 

//특정 사용자가 참여한 크루전 찾기
	public BattleDTO selectOneSearchMemberBattle(BattleDTO battleDTO){
		System.out.println("    [로그] com.coma.app.biz.battle.selectOneSearchMemberBattle 시작");
		BattleDTO result = null;
		Object[] args = new Object[]{battleDTO.getBattle_crew_num()};
		try {
			result =  jdbcTemplate.queryForObject(SEARCH_MEMBER_BATTLE, args, new BattleRowMapperOneSearchMemberBattle());
		}catch(Exception e){
			System.err.println("	[에러] com.coma.app.biz.battle.selectOneSearchMemberBattle Sql문 실패 : SEARCH_MEMBER_BATTLE = " + SEARCH_MEMBER_BATTLE);
			e.printStackTrace();
		}
		return result;
	}

 

JdbcTemplate.queryForObject 메서드가 예상한 결과가 1건이지만 실제로는 결과가 없어서 발생한 것이다.

 

사용자가 가입한 크루(보통 게임으로 따지면 길드 ?)가 없는 경우의 유효성검사를 체크하던 도중에 만났다.

쿼리문이 틀리지 않았어도, Sql문이 틀렸다는 에러문구가 뜰 수도 있다.,,