可能是由于org.hibernate.PropertyValueException是一个runtimeException的原因,你在哪抛出一个CheckedException试试看.

解决方案 »

  1.   

    <prop  key="save*"  >PROPAGATION_REQUIRED,-Exception</prop> 的作用不就是设置任意Exception发生后回滚事务的吗?
      

  2.   

    我在mysql管理工具里把Aotumatic commit屏蔽掉,连数据都保存不了了.
    难道spring的事务代理就不commit事务吗?还是我哪里配置有问题?
      

  3.   

    你就试一下抛个CheckedException出来看看吗,不花多少时间.如用 throw new Exception();替了template.save(station);试试看
      

  4.   

    public void saveUser(User user,WorkStation station) throws Exception{
    HibernateTemplate template=getHibernateTemplate();
    template.save(user);
    throw new Exception();
             }         试了,不能回滚.
      

  5.   

    太不可思议了,就一个save(user),人工抛出异常,居然不能回滚,
    除非是我配置有问题,那spring的事务管理不是什么事也不用做了吗?
      

  6.   

    完整的aplictioncontext.xml内容: <bean id="dataSource"
    class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName"
    value="com.mysql.jdbc.Driver">
    </property>
    <property name="url" value="jdbc:mysql://localhost:3306/test"></property>
    <property name="username" value="chen"></property>
    <property name="password" value="chen"></property>
    </bean>
    <bean id="SessionFactory"
    class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="dataSource">
    <ref bean="dataSource"></ref>
    </property>
    <property name="hibernateProperties">
    <props>
    <prop key="hibernate.dialect">
    org.hibernate.dialect.MySQLDialect
    </prop>
    </props>
    </property>
    <property name="mappingResources">
    <list>
    <value>com/chen/dao/User.hbm.xml</value>
    <value>com/chen/dao/WorkStation.hbm.xml</value></list>
    </property>
    </bean>

    <bean id="transactionManager"   
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">   
        <property name="dataSource">   
            <ref bean="dataSource" />   
    </property>
    </bean>

    <bean id="myDAO" class="com.chen.vo.myDAO">
    <property name="sessionFactory">
    <ref bean="SessionFactory"></ref>
    </property>
    </bean>

    <bean id="myDAOProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"> 
    <property name="transactionManager"> 
    <ref bean="transactionManager"/> 
    </property> 
    <property name="target"> 
            <ref bean="myDAO"/> 
            </property> 
    <property name="proxyTargetClass"> 
    <value>true</value> 
    </property> 
    <property name="transactionAttributes"> 
    <props> 
    <prop key="save*" >PROPAGATION_REQUIRED,-Exception</prop>
    </props> 
    </property>   
    </bean> </beans>
      

  7.   

    <bean id="transactionManager"
    class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory">
    <ref bean="sessionFactory" />
    </property>
    </bean>用HibernateTransactionManager试试看
    我这里的应用事务回滚好好的
      

  8.   

    好了,就是这个原因,org.springframework.jdbc.datasource.DataSourceTransactionManager这个事务管理有问题.
    org.springframework.orm.hibernate3.HibernateTransactionManager才真正支持事务回滚,
    我晕.困扰我那么就.
    嘿嘿,分分立刻给你.