Posts HIWORK: could not extract ResultSet 에러
Post
Cancel

HIWORK: could not extract ResultSet 에러

문제

/board/list로 요청시 다음과 같은 에러가 발생한다.

1
2
3
There was an unexpected error (type=Internal Server Error, status=500).
could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet
org.springframework.dao.InvalidDataAccessResourceUsageException: could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet

문제 원인

기존 Board 도메인에는 다음과 같이 매핑되어 있었다.

1
2
3
4
5
6
7
8
9
10
11
@Entity
@Table(name="cms_blist")
public class Board {

  @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
  @Column(name="bNo")
  private long no;
  
  @Column(name="ctNo")
  private int categoryNo;
 //..

콘솔창에는 다음과 같이 예외가 발생했다.

1
java.sql.SQLException: Unknown column 'board0_.b_no' in 'field list'

bNo라고 컬럼명을 설정했는데 b_no로 변경되는 것일까?

https://luvstudy.tistory.com/82 에 따르면, Data Jdbc에서는 name 중간에 대문자가 있으면 _소문자로 기본 변환한다고 한다. 테이블에 b_no라는 컬럼은 당연히 없기 때문에 필드를 찾을 수 없어 SQLException 에러가 난 것이다.

해결 방법

한편, MySQL에서 테이블명과 컬럼명은 대소문자를 구분하지 않는다. 따라서 다음과 같이 Column 애노테이션의 name 속성을 모두 소문자로 변경해주었다.

1
2
3
4
5
6
7
8
9
10
11
12
@Entity
@Table(name="cms_blist")
public class Board {
 
  @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
  // 소문자
  @Column(name="bno")
  private long no;

   // 소문자
  @Column(name="ctno")
  private int categoryNo;

그러면 정상적으로 화면이 출력된다!!

This post is licensed under CC BY 4.0 by the author.

모던 자바스크립트 #5.5. 배열과 메서드

이것이 안드로이드다 with 코틀린 #1 코틀린 기본문법: 7. 클래스와 설계

Loading comments from Disqus ...