복붙노트

[SPRING] java.sql.SQLException : 열을 찾을 수 없습니다.

SPRING

java.sql.SQLException : 열을 찾을 수 없습니다.

다음과 같은 오류가 발생합니다.

HTTP Status 500 - Request processing failed; nested exception is
org.springframework.jdbc.BadSqlGrammarException: StatementCallback; bad SQL grammar 
[SELECT id, name FROM track WHERE category_id = 1 ORDER BY name]; nested exception is
java.sql.SQLException: Column 'category_id' not found.

그러나 내가 복사하여 붙여 넣기 할 때 mysql 셸에 오류에 나열된 매우 선택 진술, 나는 테이블의 트랙 category_id 열이 예상대로 결과를 얻을.

이 오류의 원인은 무엇입니까?

다음은 track에 대한 table create 문입니다.

CREATE TABLE track (
 id SERIAL
,name VARCHAR(50)
,category_id BIGINT UNSIGNED -- This references a serial (bigint unsigned)
,CONSTRAINT track_id_pk PRIMARY KEY (id)
,CONSTRAINT track_category_id_fk FOREIGN KEY
  (category_id) REFERENCES category (id)
);

트랙 테이블에 관한 나의 DAO 클래스의 일부 라인은 다음과 같습니다.

private static final class TrackMapper implements RowMapper<Track> {
    @Override
    public Track mapRow(ResultSet resultSet, int rowNum) throws SQLException {
        Track track = new Track();
        track.setId(resultSet.getInt("id"));
        track.setName(resultSet.getString("name"));
        track.setCategoryId(resultSet.getInt("category_id"));
        return track;
    }
}
public List<Track> getTracks(int categoryId) {
    String sql = "SELECT id, name FROM track WHERE category_id = " + categoryId + " ORDER BY name";
    return jdbcTemplate.query(sql, new TrackMapper());
}

해결법

  1. ==============================

    1.SQL 문을 확인하십시오 - 열 목록에 category_id를 포함해야합니다.

    SQL 문을 확인하십시오 - 열 목록에 category_id를 포함해야합니다.

    String sql = "SELECT id, name, category_id where 트랙 category_id ="+ categoryId + "ORDER BY name";

    ResultSet에서 category_id를 추출하려고 했으므로 실패했습니다.

  2. from https://stackoverflow.com/questions/19062453/java-sq-sqlexception-column-not-found by cc-by-sa and MIT license