블로그 이미지
세피롯스

calendar

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

Notice

Tag

2010. 2. 24. 17:44 아이폰어플
아래처럼 if문을 써서 값이 존재하지않으면 insert처리를 존재하면 update처리를 하는 쿼리를 만들었는데
실제 동작시키니 에러가 떳다...
------------------------------------------------------------------------------------------
<insert  id="abcinsert" parameterClass="abcDTO">
<![CDATA[
if not exists(select * from schedule_info_tbl where convert(datetime, scDate,120) = convert(datetime, #scDate#,120))

begin

 insert into schedule_info_tbl($objName$,scDate,position)
 values(#textVal#, convert(datetime, #scDate#,120), #position#)
end
else
begin
 update schedule_info_tbl
 set $objName$ = #textVal#,
     position = #position#
 where convert(datetime, scDate,120) = convert(datetime, #scDate#,120)

end
]]>
</insert>
------------------------------------------------------------------------------------------

요 <insert> 이걸로 쓰는데 에러가 났다...

----------에러메세지--------
com.ibatis.dao.client.DaoException: Failed to execute queryForObject - id [scheduleSave], parameterObject [schedule.dto.ScheduleDTO@2ac57c].  Cause: java.sql.SQLException: Insert statements cannot be executed as a query.
Caused by: java.sql.SQLException: Insert statements cannot be executed as a query.


봤더니 dao쪽에 아무생각없이queryForObject를 썼는데 이게 다른건 상관없지만
xml에 <insert>로 선언하고 내용에 위에처럼 insert도 있고update도 있으면  에러가 나온다.

그래서 dao에 queryForObject대신
this.insert("abcInsert",abcDTO);  <== 이렇게 바꾸니까 된다ㅎㅎㅎ

정확한 원인분석은 못해서 왜그런건지 궁금하지만 시간관계상 패스;;;
posted by 세피롯스