private Clob DocContent;==>private String DocContent;
<property name="DocContent" type="clob"  update="true" insert="true" />==><property name="DocContent" type="java.lang.String"  update="true" insert="true" />不过我的DocContent取出来却是null,郁闷ing……

解决方案 »

  1.   

    参考spring的做法。一共有三种做法,我现在在外面出差,相关资料没带,呵呵,回去告诉你。
      

  2.   

    debug状态下可以读到clob内容,真正运行起来就读不到了(null),这是啥原因?
      

  3.   

    呵呵,给你一些参考。
    1。也是最基本的clob的存取,实际上和jdbc实现原来差不多。这种代码在网上有很多,先创建一个空clob,然后在向其中写入数据,这个估计你也能找到。2。利用Spring实现
    将String类型在hbm文件中对应org.springframework.orm.hibernate.support.ClobStringType来实现。具体需要在Spring配置文件中配置
        <bean id="oracleLobHandler" class="org.springframework.jdbc.support.lob.OracleLobHandler">
            <property name="nativeJdbcExtractor"><ref local="nativeJdbcExtractor"/></property>
        </bean>
    等,这个你具体找下网上的帮助就可以了。3。自己定义个类型来对应,这是利用hibernate来自己定义类型(继承它的UserType类)。hibernate的wiki中有一篇文章叫做《Using Clobs/Blobs with Oracle and Hibernate》,里面写的非常详细。(具体地址我记不清楚了,但是文档我已经下到硬盘里了)实际上这种方法和第二种相差不多。只不过第二种实际上用的是Spring来继承的hibernate进行自定义类型的写法。对于2,3方法,一般都需要用oracle9才能支持,而且要9.2.0.0以上版本的jdbc驱动才可以。oracle的驱动很是麻烦,感觉比mysql强不到哪去。至于oracle10G嘛,据说是可以直接对clob进行存取,我没装过(很久不用oracle了),不敢断言,你可以试试看。
      

  4.   

    抱歉啊,这个问题早已解决,不过还是感谢 mxlmwl(飞星)的解答。
    具体做法:
    映射文件中如下:
    <property name="DocContent" type="text" not-null="true"/>
    lib下:
    加入ojdbc14.jar替换低版本的jar包。