oracle clob字段,导致tomcat线程不退出

本文探讨了在使用Oracle Clob字段时遇到的问题,特别是在NetLearningPlatform项目中与Tomcat线程相关的问题。文章深入分析了Java代码片段,并讨论了如何处理Clob字段以避免线程阻塞。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    前段时间再做net learning platform时,由于使用了oracle clob字段,导致tomcat线程不退出 ,以为是写入代码有问题,如下   java.io.Writer pw=null;
        try {
            Long id = (Long)o.getClass().getMethod("getId",null)
                      .invoke(o,null);

            if(id==null)
            {
                //调用setXXX(预设空clob)
                o.getClass().getMethod("set"+getsetXXX,new Class[]{java.sql.Clob.class})
                .invoke(o,new Object[]{Hibernate.createClob(" ")});
                session.saveOrUpdate(o);
            }
            else
            {

                //调用清空原来的clob
                o.getClass().getMethod("set"+getsetXXX,new Class[]{java.sql.Clob.class})
                .invoke(o,new Object[]{Hibernate.createClob(" ")});
            }

            session.flush();
            //锁表
            session.refresh(o, LockMode.UPGRADE);

            //得到oracle中的clob
            java.sql.Clob clob= (java.sql.Clob) o.getClass().getMethod("get"+getsetXXX,null)
                                .invoke(o,null);


            //hibernate3以后改了,Clob->CLOB需要SerializableClob
            org.hibernate.lob.SerializableClob sb = (org.hibernate.lob.SerializableClob)clob;
            java.sql.Clob wrapClob = sb.getWrappedClob();
            // if(wrapClob instanceof oracle.sql.CLOB){

            oracle.sql.CLOB clob2 = (oracle.sql.CLOB) wrapClob;

            pw =  clob2.getCharacterOutputStream();
            /*     }
                 else {
                     System.out.println("fdfdf"+wrapClob.getClass().getName());

                     pw =  clob.setCharacterStream(0);
                 }*/

            pw.write(data);

            pw.close();
            pw=null;

            if(autoCommit)
                tx.commit();

        }

为什么连读取都有问题?

好像oracle10g直接映射String

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值