此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
楼主【zuzaghi】截止到2008-07-14 10:37:27的历史汇总数据(不包括此帖):
发帖的总数量:8                        发帖的总分数:390                      每贴平均分数:48                       
回帖的总数量:6                        得分贴总数量:0                        回帖的得分率:0%                       
结贴的总数量:8                        结贴的总分数:390                      
无满意结贴数:2                        无满意结贴分:120                      
未结的帖子数:0                        未结的总分数:0                        
结贴的百分比:100.00%               结分的百分比:100.00%                  
无满意结贴率:25.00 %               无满意结分率:30.77 %                  
敬礼!

解决方案 »

  1.   

    建议你用:<bean id="lobHandler" lazy-init="true"
    class="org.springframework.jdbc.support.lob.DefaultLobHandler" /></beans>
      

  2.   

    如果使用Oracle10g的话,可以直接使用:<bean id="lobHandler" lazy-init="true"  class="org.springframework.jdbc.support.lob.DefaultLobHandler"/>
    如果是9i的话,则:
    <bean id="lobHandler" lazy-init="true"   class="org.springframework.jdbc.support.lob.OracleLobHandler">
            <property name="nativeJdbcExtractor">
                <ref bean="nativeJdbcExtractor"/>
            </property>
    </bean> <bean id="nativeJdbcExtractor" lazy-init="true"   class="org.springframework.jdbc.support.nativejdbc.SimpleNativeJdbcExtractor"/>因为Oracle9i处理Clob的方式和别的数据库很不一样,甚至与Oracle10g都不兼容
      

  3.   

    谢谢,不过我用了的。
    spring里我加了
    <bean id="nativeJdbcExtractor"
    class="org.springframework.jdbc.support.nativejdbc.SimpleNativeJdbcExtractor" />
    <bean id="oracleLobHandler" lazy-init="true"
    class="org.springframework.jdbc.support.lob.OracleLobHandler">
    <property name="nativeJdbcExtractor">
    <ref bean="nativeJdbcExtractor" />
    </property>
    </bean>
    <bean id="sessionFactory"
    class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource">
    <ref bean="dataSource" />
    </property>
    <property name="lobHandler">
    <ref bean="oracleLobHandler" />
    </property>
    ......
    用的是org.springframework.orm.hibernate3.support.ClobStringType类型,真是急死人了
      

  4.   

    lz最好给出你的配置文件,让我们看看你的lobHandler的定义,另外你的oracle版本最好也说一声
      

  5.   

    嗯,已经给出来了啊,在上面,还需要什么配置文件吗?还有就是我把oracle驱动也改成9.2.0.5.0的了,就的9.2.0.1.0不行,结果换成9.2.0.5.0也不行。
      

  6.   

    For writing LOBs, either an active Spring transaction synchronization or an active JTA transaction (with "jtaTransactionManager" specified on LocalSessionFactoryBean or a Hibernate TransactionManagerLookup configured through the corresponding Hibernate property) is required. 
      

  7.   

    让看看你的配置文件!说的很明白了!难道你英文不行?<bean id="transactionManager"
    class="org.springframework.orm.hibernate3.HibernateTransactionManager" />
      

  8.   


    <bean id="simpleNativeJdbcExtractor" class="org.springframework.jdbc.support.nativejdbc.SimpleNativeJdbcExtractor" /><bean id="oracleLobHandler" class="org.springframework.jdbc.support.lob.OracleLobHandler">
    <property name="nativeJdbcExtractor" ref="simpleNativeJdbcExtractor" />
    </bean>
    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />

    <property name="lobHandler" ref="oracleLobHandler" />

    <property name="hibernateProperties">...
      

  9.   

    是不是你的代码中没有关闭session?
      

  10.   

    我没问题,只要当作String 来处理就行了。
      

  11.   

    我想session应该是关了的,应该不是这个原因。
    还有就是楼上的说的太简单轻松了嘛。不知道 行的通不
      

  12.   

    M_song 你除了复制网上的还会说点实在的不?
      

  13.   

    你贴出全部的applicationContext.xml配置文件可以不,你的大字段配置的没问题,但并不代表别的地方正确我就怀疑你在配置文件里根本没加事务配置,这样肯定报你说的错误
      

  14.   

    <bean id="transactionManager" 
    class="org.springframework.orm.hibernate3.HibernateTransactionManager" />
      

  15.   


    只有这个能代表什么,事务的切入点和通知都在哪呢,贴代码吧
    还有oracle的版本确实不一样的话会有问题,怎么能说是复制网上的说法呢,这个一般人也都知道
      

  16.   


    既然你这样说,那抱歉,虽然我已经有办法解决,但对于你的问题以后一概不问!有些是我直接贴的自己程序!
    而那段英文,是查的官方api!
      

  17.   

    我的事务加了的啊,先从struts
    <action parameter="method" attribute="tEmployerContractForm"
    name="tEmployerContractForm" path="/enterprise/tEmployerContractNew"
    scope="request"
    type="org.springframework.web.struts.DelegatingActionProxy"
    validate="false">
    <forward name="list"
    path="..." />
    。spring里中
    <bean id="TEmployerContractService"
    class="com.lrms.enterprise.dao.TEmployerContractDAO">
    <property name="sessionFactory">
    <ref bean="sessionFactory" />
    </property>
    </bean><bean id="TEmployerContractServiceProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
    <property name="transactionManager">
    <ref bean="transactionManager" />
    </property> <property name="target">
    <ref bean="TEmployerContractService" />
    </property> <property name="transactionAttributes">
    <props>
    <prop key="save*">PROPAGATION_REQUIRED</prop>
    <prop key="update*">PROPAGATION_REQUIRED</prop>
    <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
    <prop key="read*">PROPAGATION_REQUIRED,readOnly</prop>
    <prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
    <prop key="query*">PROPAGATION_REQUIRED,readOnly</prop>
    <prop key="is*">PROPAGATION_REQUIRED,readOnly</prop>
    </props>
    </property>
    </bean>
    <bean name="/enterprise/tEmployerContractNew"
    class="com.lrms.enterprise.struts.action.TEmployerContractAction"
    singleton="false">
    <property name="TEmployerContractService"
    ref="TEmployerContractServiceProxy" />
    </bean>大概就是这样一些配置
      

  18.   

    看了一下,你的SessionFactory、和transactionManager没贴出来,不过那里一般不会有问题你操作这个函数名字符合,你定义的save*,update*.......的规则吗
      

  19.   

    在DAO里面用的是
    public void save(TEmployerContract transientInstance) {
    log.debug("saving TEmployerContract instance");
    try {
    getHibernateTemplate().save(transientInstance);
    log.debug("save successful");
    } catch (RuntimeException re) {
    log.error("save failed", re);
    throw re;
    }
    }
    这个也应该没问题样
      

  20.   

    在用了clob的时候,如果没被事务管理的话就会出上述错误,既然你的已经管理起来了,我只能帮你up
      

  21.   

    这个问题与配置文件没多大关系。我以前做过测试,在往oracle数据库中存入clob类型数据时不能在action中写io流,你把相应的formbean传到service方法中,然后再通过获取formbean的file类型属性生成一个byte数组,然后调用Hibernate.createBlob(byte数据组)方法set到实体,这样存到数据库就行了,同样的方法如果写在action中就不行。
      

  22.   

    楼上的兄弟,我用的是org.springframework.orm.hibernate3.support.ClobStringType类型,不是java.sql.clob
      

  23.   

    哈哈哈,终于搞定了!谢谢Landor2004和M_song两位好兄弟!
      

  24.   

    我也遇到同样的问题   结果发现是services层的方法名不符合事务管理的格式