mybatis.net 에서 db와 똑같은 형태로 entity 클래스를 만들었습니다.
하지만 select 문에서는
select (column1 + column2) as col3 from [table] 이런 형식의 데이터가 많이 있습니다.
그래서 viewmodel을 만들어서 resultClass로 넣었는데
지정한 캐스트가 잘못되었습니다. 오류가 있습니다.
mybatis.net에서는 반드시 mapper 클래스가 db와 똑같은 클래스로 하나만 존재하여야 하나요?
좀 알려주세요..ㅠ
Comment 1
-
컴포지트
2012.04.18 13:24


Java로 Mybatis 돌린 경험으로 비추어 볼때,
일단 저 (column1 + column2) 칼럼에 대한 타입이 불확실할 수밖에 없습니다. MSSQL 쓴다면 더 그렇죠.
두 칼럼이 저렇게 합침으로 인한 결과물을 SQL 에서는 타입을 variable 로 처리하기 때문에
MyBatis 에서는 유추할 수 없는 상황이 되죠.
단일 column 가지고 특정 타입을 반환해주는 작업이라면 충분히 캐스팅은 가능했죠.
그래서 저 경우에는 CONVERT 같이 SQL 내에서 명시적으로 캐스팅하면 해결할 수 있습니다.
CONVERT(VARCHAR(50),column1 + column2)
즉, 타입을 유추하기 어려울 수 있는 저런 상황에서는 명시적으로 캐스팅하면 문제 없이 값을 받을 수 있습니다.