Altibase 에서 셀렉트 혹은 인서트 가 안되는 증상. 데이터 타입관련.
- 작성자 :
- 박*석
- 작성일 :
- 2011-06-17 11:40:07
- 조회수 :
- 2,791
- 구분 :
- 개발환경
- 진행상태 :
- 완료
Q
안녕하세요.
이번에 altibase 관련하여 DB를 연결하여
clob 타입이 포함된 데이터를
셀렉트 하거나 인서트 할일이 생겼습니다.
그런데 문제가 발생했는데요.
context-datasource.xml 에
<property name="defaultAutoCommit" value="false" />
냐
<property name="defaultAutoCommit" value="true" />
냐에 따라서 인서트만 되거나 clob 셀렉트가 되거나 합니다.
false 로 하면 쿼리가 인서트가 안되는대신 clob 타입이 셀렉트가 되고
true 롷면 인서트가 안되는대신 clob 타입이 셀렉트가 안됩니다.
해당 관련해서 처리할 수 있는 방법이 있으면 부탁드리겠습니다.
감사합니다.
좋은하루되세요
이번에 altibase 관련하여 DB를 연결하여
clob 타입이 포함된 데이터를
셀렉트 하거나 인서트 할일이 생겼습니다.
그런데 문제가 발생했는데요.
context-datasource.xml 에
<property name="defaultAutoCommit" value="false" />
냐
<property name="defaultAutoCommit" value="true" />
냐에 따라서 인서트만 되거나 clob 셀렉트가 되거나 합니다.
false 로 하면 쿼리가 인서트가 안되는대신 clob 타입이 셀렉트가 되고
true 롷면 인서트가 안되는대신 clob 타입이 셀렉트가 안됩니다.
해당 관련해서 처리할 수 있는 방법이 있으면 부탁드리겠습니다.
감사합니다.
좋은하루되세요
A
안녕하세요.. 박준석님..
Altibase의 경우는 별도의 TypeHandler를 지정하셔서 처리하셔야 합니다.
우선 defaultAutoCommit 속성은 제거(또는 false로 지정)하시고..
다음과 같이 TypeHandler를 통해 처리하시면 됩니다.
- AltibaseClobStringTypeHandler.java 적용
=> 공통컴포넌트 중 egovframework-common-X.X.X.zip(일반로그인 참조)를 다운받으시면.. egovframework.com.cmm.AltibaseClobStringTypeHander.java
- iBatis Query xml 참조
<resultMap id="boardDetail" class="egovframework.com.cop.bbs.service.BoardVO">
...
<result property="nttCn" column="NTT_CN" columnIndex="7" jdbcType="CLOB" typeHandler="egovframework.com.cmm.AltibaseClobStringTypeHandler"/>
...
</resultMap>
...
<select id="BBSManageDAO.selectBoardArticle" parameterClass="BoardVO" resultMap="boardDetail" >
<![CDATA[
SELECT
a.NTT_SJ, a.NTCR_ID, a.NTCR_NM, a.NTT_NO, a.NTT_CN,
a.PASSWORD, a.FRST_REGISTER_ID, b.USER_NM as FRST_REGISTER_NM,
TO_CHAR(a.FRST_REGISTER_PNTTM, 'YYYY-MM-DD') as FRST_REGISTER_PNTTM,
a.NTCE_BGNDE, a.NTCE_ENDDE, a.INQIRE_CO,
a.USE_AT, a.ATCH_FILE_ID, a.BBS_ID, a.NTT_ID,
a.PARNTS, a.REPLY_AT, a.REPLY_LC, a.SORT_ORDR,
c.BBS_TY_CODE, c.BBS_ATTRB_CODE, c.REPLY_POSBL_AT,
c.FILE_ATCH_POSBL_AT, c.POSBL_ATCH_FILE_NUMBER, c.BBS_NM
...
]]>
</select>
<insert id="BBSManageDAO.insertBoardArticle" parameterClass="Board" >
<![CDATA[
INSERT INTO COMTNBBS
(NTT_ID, BBS_ID, NTT_SJ, NTT_CN, SORT_ORDR,
NTCR_ID, NTCR_NM, PASSWORD, INQIRE_CO,
NTCE_BGNDE, NTCE_ENDDE, REPLY_AT,
PARNTS, NTT_NO, REPLY_LC, ATCH_FILE_ID,
FRST_REGISTER_ID, FRST_REGISTER_PNTTM, USE_AT
)
VALUES
( #nttId#, #bbsId#, #nttSj#, #nttCn:CLOB#, #nttNo#,
#ntcrId#, #ntcrNm#, #password#, #inqireCo#,
#ntceBgnde#, #ntceEndde#, #replyAt#,
#parnts#, 1, #replyLc#, #atchFileId#,
#frstRegisterId#, SYSDATE, 'Y'
)
]]>
</insert>
그럼.. 즐거운 하루되십시오.
감사합니다.
Altibase의 경우는 별도의 TypeHandler를 지정하셔서 처리하셔야 합니다.
우선 defaultAutoCommit 속성은 제거(또는 false로 지정)하시고..
다음과 같이 TypeHandler를 통해 처리하시면 됩니다.
- AltibaseClobStringTypeHandler.java 적용
=> 공통컴포넌트 중 egovframework-common-X.X.X.zip(일반로그인 참조)를 다운받으시면.. egovframework.com.cmm.AltibaseClobStringTypeHander.java
- iBatis Query xml 참조
<resultMap id="boardDetail" class="egovframework.com.cop.bbs.service.BoardVO">
...
<result property="nttCn" column="NTT_CN" columnIndex="7" jdbcType="CLOB" typeHandler="egovframework.com.cmm.AltibaseClobStringTypeHandler"/>
...
</resultMap>
...
<select id="BBSManageDAO.selectBoardArticle" parameterClass="BoardVO" resultMap="boardDetail" >
<![CDATA[
SELECT
a.NTT_SJ, a.NTCR_ID, a.NTCR_NM, a.NTT_NO, a.NTT_CN,
a.PASSWORD, a.FRST_REGISTER_ID, b.USER_NM as FRST_REGISTER_NM,
TO_CHAR(a.FRST_REGISTER_PNTTM, 'YYYY-MM-DD') as FRST_REGISTER_PNTTM,
a.NTCE_BGNDE, a.NTCE_ENDDE, a.INQIRE_CO,
a.USE_AT, a.ATCH_FILE_ID, a.BBS_ID, a.NTT_ID,
a.PARNTS, a.REPLY_AT, a.REPLY_LC, a.SORT_ORDR,
c.BBS_TY_CODE, c.BBS_ATTRB_CODE, c.REPLY_POSBL_AT,
c.FILE_ATCH_POSBL_AT, c.POSBL_ATCH_FILE_NUMBER, c.BBS_NM
...
]]>
</select>
<insert id="BBSManageDAO.insertBoardArticle" parameterClass="Board" >
<![CDATA[
INSERT INTO COMTNBBS
(NTT_ID, BBS_ID, NTT_SJ, NTT_CN, SORT_ORDR,
NTCR_ID, NTCR_NM, PASSWORD, INQIRE_CO,
NTCE_BGNDE, NTCE_ENDDE, REPLY_AT,
PARNTS, NTT_NO, REPLY_LC, ATCH_FILE_ID,
FRST_REGISTER_ID, FRST_REGISTER_PNTTM, USE_AT
)
VALUES
( #nttId#, #bbsId#, #nttSj#, #nttCn:CLOB#, #nttNo#,
#ntcrId#, #ntcrNm#, #password#, #inqireCo#,
#ntceBgnde#, #ntceEndde#, #replyAt#,
#parnts#, 1, #replyLc#, #atchFileId#,
#frstRegisterId#, SYSDATE, 'Y'
)
]]>
</insert>
그럼.. 즐거운 하루되십시오.
감사합니다.