本人开发用的oracle9i,接收CONFIG_VALUE CLOB类型的字段我用的是字符串类型的,在ibatis中有条sql是这样写的:
<resultMap id="baseconfigMap" class="baseconfig" >
  <result column="CONFIG_ID" property="configId"/>
  <result column="CONFIG_VALUE" property="configValue" />
  <result column="ISDELETE" property="isDelete"/>
  </resultMap>
  <select id="IbatisBaseConfigDAO.queryBaseConfigById" parameterClass="int" resultMap="baseconfigMap">
  SELECT CONFIG_ID,to_char(CONFIG_VALUE) as CONFIG_VALUE,ISDELETE FROM X_TM_CONFIG WHERE CONFIG_ID = #value#
  </select>
这样对于字段的值小于4000才有效,现在由于系统升级,字段值有可能会大于4000,如果超过了4000上面的sql就会报错了,不用我解释为什么了吧?
现在我需要就是超过4000一样可以执行,我用过如下的办法:
1.去掉to_char(),可以成功,但是在unix系统中就不行了
<select id="IbatisBaseConfigDAO.queryBaseConfigById" parameterClass="int" resultMap="baseconfigMap">
  SELECT CONFIG_ID,CONFIG_VALUE as CONFIG_VALUE,ISDELETE FROM X_TM_CONFIG WHERE CONFIG_ID = #value#
  </select>
2.试着在对应关系中加下转换:不行
<resultMap id="baseconfigMap" class="baseconfig" >
  .............................
  <result property="configValue" column="CONFIG_VALUE" jdbcType="CLOB" javaType = "java.lang.String" typeHandler =" OracleClobTypeHandlerCallback "/>
  </resultMap>

我需要更好的办法,望高手们帮帮位帮我解决下,谢谢!!!!

解决方案 »

  1.   

    楼上的朋友,我不是要你们看sql,也不是要关注字段要啥类型,定死了就是CLOB类型,你改类型也不可能的,因为是系统升级字段类型能随便改?在说CLOB长度本来就可以超4000的,这是正确的,to_char()超4000就会报错,我现在要的是如果当超4000后如何作处理?java接收的类型是字段串的,我就是要CLOB类型的java用String类型来接收,有什么办法?可以从ibatis映射关系作手不?可以从类型转换的时候作手不?可以在接收值过来后在java代码中做转换成字符串也行??有没高手遇到过,帮帮忙!!!!!