Notice
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 28 |
29 | 30 | 31 |
Tags
- annotation
- junit
- ERD
- TDD
- 우분투
- 오류
- 안드로이드
- 메모
- java se
- 초대장
- 실수
- 오라클
- eclipse
- action
- Modeling
- 초대장 배포
- 디자인 오류
- Log4j
- struts2
- TAG 오류
- Android
- DATABASE
- eclipse plugin
- java
- iBATIS
- Spring Framework
- 관심책
- derby
- Oracle
- Spring
- Today
- 0
- Total
- 579,107
거꾸로 토마토
MS-SQL서버를 iBatis와 사용할 때 <selectKey>사용시 유의사항 본문
MS-SQL 서버를 iBatis를 사용할 때 insert처리하고 바로 identity값을 얻고자할 때 <selectKey>태그를 이용합니다. 이 때 SCOPE_IDENTITY()를 이용할 것을 권장합니다. 그러면서 대부분의 설명이 다음과 같이 되어 있습니다.
하지만 위와같이 처리하면 다음과 같은 exception 발생합니다.
위 오류를 해결하기 위해 상당수의 시간을 소비하였고 결국은 다음과 같이 해야 문제가 발생하지 않고 올바로 수행한다는 것을 발견했습니다.
위에서 처럼 'SELECT SCOPE_IDENTITY()'를 사용하지 않고 'SELECT IDENT_CURRENT('table')'를 사용한다면 최상단의 로직으로 수행해도 잘 수행이 됩니다. 하지만 SELECT IDENT_CURRENT은 여러 사용자가 동시에 접속해서 사용하는 시스템은 값을 절대 보장할 수 없기 때문에 SCOPE_IDENTITY() 사용을 권장하고 있습니다.
<insert id="createProjectBasicInfo" parameterClass="prjIdx">
INSERT INTO PRJ_INFO (
...
) VALUES (
...
)
<selectKey keyProperty="prj_info_seq" resultClass="int">
SELECT SCOPE_IDENTITY()
</selectKey>
</insert>
하지만 위와같이 처리하면 다음과 같은 exception 발생합니다.
Exception in thread "main" com.ibatis.common.beans.ProbeException:Could not set property 'prj_info_seq' to value 'null' for domain.ProjectInfo. Cause: java.lang.IllegalArgumentException
위 오류를 해결하기 위해 상당수의 시간을 소비하였고 결국은 다음과 같이 해야 문제가 발생하지 않고 올바로 수행한다는 것을 발견했습니다.
<insert id="createProjectBasicInfo" parameterClass="prjIdx">
<selectKey keyProperty="prj_info_seq" resultClass="int">
INSERT INTO PRJ_INFO (
...
) VALUES (
...
)SELECT SCOPE_IDENTITY()
</selectKey>
</insert>
위에서 처럼 'SELECT SCOPE_IDENTITY()'를 사용하지 않고 'SELECT IDENT_CURRENT('table')'를 사용한다면 최상단의 로직으로 수행해도 잘 수행이 됩니다. 하지만 SELECT IDENT_CURRENT은 여러 사용자가 동시에 접속해서 사용하는 시스템은 값을 절대 보장할 수 없기 때문에 SCOPE_IDENTITY() 사용을 권장하고 있습니다.
'Programming > iBatis' 카테고리의 다른 글
MS-SQL서버를 iBatis와 사용할 때 <selectKey>사용시 유의사항 (3) | 2011.07.21 |
---|---|
iBatis에서 insert후 자동 sequence Key 값을 가져오는 설정 방법 (0) | 2008.02.14 |
iBatis에서 객체 매핑시 인스턴스 변수명 규칙? (0) | 2008.02.13 |
초짜의 iBatis 오류와의 싸움 (1) (0) | 2008.02.01 |
3 Comments