[오류]Caused by: org.apache.ibatis.executor.ExecutorException: No constructor found in '도메인 클래스'

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Caused by: org.apache.ibatis.executor.ExecutorException: No constructor found in com.yourlibrary.domain.AuthVO matching [java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.sql.Timestamp, java.lang.String, java.lang.String]
   at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.createByConstructorSignature(DefaultResultSetHandler.java:668)
   at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.createResultObject(DefaultResultSetHandler.java:621)
   at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.createResultObject(DefaultResultSetHandler.java:594)
   at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.getRowValue(DefaultResultSetHandler.java:909)
   at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.applyNestedResultMappings(DefaultResultSetHandler.java:963)
   at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.getRowValue(DefaultResultSetHandler.java:918)
   at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleRowValuesForNestedResultMap(DefaultResultSetHandler.java:881)
   at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleRowValues(DefaultResultSetHandler.java:328)
   at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleResultSet(DefaultResultSetHandler.java:303)
   at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleResultSets(DefaultResultSetHandler.java:196)
   at org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:64)
   at org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:79)
   at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:63)
   at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:326)
   at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156)
   at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109)
   at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:83)
   at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:148)
   at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:141)
   at org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:77)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
   at java.lang.reflect.Method.invoke(Unknown Source)
   at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:433)
   ... 49 more
cs

- domain(DTO) 설정 중 form 태그로부터 값을 받도록 설정하는 도중 문제가 발생
- SQL 구문으로 부터 값을 받는 DTO 에서 오류가 발생함


※ 오류 해결 방안

controller 에서 코드를 조금이라도 줄여보기 위해 DTO(VO)에서 별도의 생성자를 만든 것이 문제가 되었다.
- 사용자 지정 생성자가 작성됨

@Data 로  getter/setter, 생성자 등이 자동으로 생성되지만, 사용자가 직접 생성자를 작성하는 경우 기존의 기본으로 생성되는 생성자(class 명 () : 인수가 없는 기본 생성자) 또한 생성되지 않는다.

사용자 지정 클래스 삭제 이후, controller 부분에서 다소 번거롭더라도 getter/setter를 이용하는 방법으로 해결 완료

댓글