落Nicety的博客

专注于web2.0

   :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  11 随笔 :: 0 文章 :: 12 评论 :: 0 Trackbacks
项目中用到 长文本作为内容
pojo中使用 string 类型 数据 oracle9i 用的的clob字段
pojo:

private String content;
public void setContent(String content){
    
this.content = content;
}
hibernate配置
<property name="content" column="C_Content" type="text" length="10000"></property>

发现当content 字段的内容在 1000~2000 字符长度中间的时候出现 sql错误
而文本长度小于1000 长于2000 都没有问题
问题:hibernate配置中length="10000"属性是做什么用的?我尝试过 将他配置成1000,5000,1w或者不配置 最后执行的结果都一样

资料 google baidu。。。
一般认为 length指定的是text的最大长度,这里显然不是
又有认为 是将java中string 值当作clob处理的最小长度,也就是当string长度小于这个值的时候 当string处理,当string大于这个长度的时候当text(clob)处理。但是我将length设置为1000时,输入1k+文本 依然有sql错误。超过2000却没有问题。
so..这两个都不是答案.
又有人说,介个是jdbcbug 换成10g的就米有问题了。遂尝试..未果,问题依旧。
finally..这个length属性到底干嘛用 没搞清楚.. 抑或 不该这么配置?

继续寻找,找到另外一种解决办法。可以通过spring来解决这个问题
hibernate配置
<property name="content" column="C_Content" type="org.springframework.orm.hibernate3.support.ClobStringType"
length
="10000"></property>

spring配置
<bean id="oracleLobHandler" class="org.springframework.jdbc.support.lob.OracleLobHandler">   
        
<property name="nativeJdbcExtractor">
            
<ref local="nativeJdbcExtractor"/>
        
</property>  
</bean>   
<bean id="nativeJdbcExtractor" class="org.springframework.jdbc.support.nativejdbc.SimpleNativeJdbcExtractor">   
</bean>
上面2个bean是关键
然后在sessionFactory的bean中加入
<bean id="sessionFactory"
        class
="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        
<property name="lobHandler">   
            
<ref bean="oracleLobHandler" />   
        
</property>
        。。。其他
</bean>


问题解决,但是length="10000" 属性依然无用,可正常插入 任意长度的字符串
但是这样的话 数据库就不能跨平台了..so 期待跨数据库平台的 方案~~
posted on 2008-01-28 15:48 落Nicety 阅读(445) 评论(4)  编辑  收藏 所属分类: 基础

评论

# re: hibernate 映射 clob字段 2008-02-22 14:55 杨爱友
根据我的感觉,hibernate配置里所有的length在程序中都是没用的,可有可无,他的作用好象是在必要的时候生成数据库用。  回复  更多评论
  

# re: hibernate 映射 clob字段 2008-03-04 13:33 落Nicety
@杨爱友
恩 貌似是给那些 根据hibernate配置文件生成 sql的工具用的~~
不过还没找到官方的说明~~  回复  更多评论
  

# re: hibernate 映射 clob字段 2008-06-03 19:28 使用该方法
按照您说的做了 报c3P0的错误   回复  更多评论
  

# re: hibernate 映射 clob字段 2008-06-03 21:23 落Nicety
@使用该方法
是不是其他地方配置的不对?有没有详细点的错误信息  回复  更多评论
  


标题  
姓名  
主页
验证码 *  
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
 
 
相关链接:
网站导航: