我用的是ssh框架,为什么我写的数据没有提交到数据库的呢,并且我要是每次提交的数据主键一样的话,就报错,但是又没有写入数据库里,有知道的麻烦告诉一下,谢谢,解决了就结贴
//我的application.xml文件
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="
           http://www.springframework.org/schema/beans
               http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
           http://www.springframework.org/schema/tx
               http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
           http://www.springframework.org/schema/aop  
               http://www.springframework.org/schema/aop/spring-aop-2.0.xsd ">
<bean id="dataSource"
      class="org.springframework.jdbc.datasource.DriverManagerDataSource">
      <property name="driverClassName">
       <value>com.microsoft.sqlserver.jdbc.SQLServerDriver</value></property>
       <property name="url">
          <value>jdbc:sqlserver://localhost:1433;DatabaseName=MyShop</value></property>
       <property name="username">
         <value>sa</value>
         </property>
        <property name="password">
         <value>mysql</value>
         </property>
        </bean>
<bean id="transactionManager"
 class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
 <property name="dataSource">
  <ref bean="dataSource"/></property>
  </bean>
<bean id="mySessionFactory"
      class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
      <property name="dataSource">
         <ref bean="dataSource"/>
         </property>
      <property name="mappingResources">
            <list>
               <value>chijiuclass/myshop.hbm.xml</value>
            </list></property>
      
      <property name="hibernateProperties">
        <props>
          <prop key="hibernate.dialect">
               org.hibernate.dialect.SQLServerDialect</prop>
          <prop key="hibernate.show_sql">true</prop>
        </props>
        </property>
        </bean>
<bean id="userdao" class="chijiuclass.userdao">
      <property name="sessionFactory">
       <ref bean="mySessionFactory"/></property></bean>
<bean id="upcheck" class="action.logincheck">
    </bean>
  <bean name="/LoginAction"
        class="action.LoginAction">
        <property name="upcheck">
          <ref bean="upcheck"/>
          </property>
        <property name="n">
          <value>7</value>
        </property>
        </bean>
  <bean id="userDAOProxy"
        class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
        <property name="proxyInterfaces">
           <list>
              <value>chijiuclass.Iuserdao</value>
           </list>
           </property>
           <property name="target">
             <ref bean="userdao"/></property>
         <property name="transactionManager">
           <ref bean="transactionManager"/></property>
         <property name="transactionAttributes">
           <props>
             <prop key="insert*">PROPAGATION_REQUIRED</prop>
           </props>
          </property>
          </bean>
</beans>
  
//测试程序package chijiuclass;
import chijiuclass.*;
import java.util.*;
import javax.servlet.http.*;
import org.apache.struts.action.*;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;import form.denluform;public class test {
public static void main(String[] args){
 ApplicationContext context=new FileSystemXmlApplicationContext("F:/Myeclipsworks/MyShopWeb/src/applicationContext.xml"); 
 Iuserdao user=(Iuserdao)context.getBean("userDAOProxy");
 denlu den=new denlu();
 den.setMage(5);
 den.setMemail("2344");
 den.setMname("ds");
 den.setMpassword("123");
 den.setMsex("女");
 den.setMtelphone("456786");
 den.setMusername("s3");
 user.insert(den);
 den=user.find("1");
 System.out.println("telphone"+den.getMtelphone());
}}

解决方案 »

  1.   

    这里的时候我就交给了spring的声明式事务管理了啊
    <bean id="userDAOProxy"
    class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
    <property name="proxyInterfaces">
    <list>
    <value>chijiuclass.Iuserdao</value>
    </list>
    </property>
    <property name="target">
    <ref bean="userdao"/></property>
    <property name="transactionManager">
    <ref bean="transactionManager"/></property>
    <property name="transactionAttributes">
    <props>
    <prop key="insert*">PROPAGATION_REQUIRED</prop>
    </props>
    </property>
      

  2.   

    没有错误信息,就是事物没有提交,我已经知道了,是我的事物管理是关于jdbc的,不是hibernate的,不过现在还是没有解决,我看的这本书上没有关于hibernate的
      

  3.   

     JDBC如果异常会自动回滚,HIBERNATE要手动设置
      

  4.   

    再问一下我把class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource">
    <ref bean="dataSource"/></property>
    改成:class="org.springframework.orm.hibernate3.HibernateTransactionManager">
     <property name="sessionFactory">
      <ref local="mySessionFactory"/></property>
      </bean>
    为什么还是不可以
      

  5.   

    我配了的啊:没有配的话给我纠正一下吧,谢谢了!!再发一次,希望各位大侠看一看,我实在是找不出来了,我看到网上可以这样配的啊//spring.xml文件
    <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:aop="http://www.springframework.org/schema/aop"
           xmlns:tx="http://www.springframework.org/schema/tx"
           xsi:schemaLocation="
               http://www.springframework.org/schema/beans
                   http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
               http://www.springframework.org/schema/tx
                   http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
               http://www.springframework.org/schema/aop  
                   http://www.springframework.org/schema/aop/spring-aop-2.0.xsd ">
    <bean id="dataSource"
          class="org.springframework.jdbc.datasource.DriverManagerDataSource">
          <property name="driverClassName">
           <value>com.microsoft.sqlserver.jdbc.SQLServerDriver</value></property>
           <property name="url">
              <value>jdbc:sqlserver://localhost:1433;DatabaseName=MyShop</value></property>
           <property name="username">
             <value>sa</value>
             </property>
            <property name="password">
             <value>mysql</value>
             </property>
            </bean>
    <bean id="transactionManager"
     class="org.springframework.orm.hibernate3.HibernateTransactionManager">
     <property name="sessionFactory">
      <ref local="mySessionFactory"/></property>
      </bean>
    <bean id="mySessionFactory"
          class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
          <property name="dataSource">
             <ref bean="dataSource"/>
             </property>
          <property name="mappingResources">
                <list>
                   <value>chijiuclass/myshop.hbm.xml</value>
                </list></property>
          
          <property name="hibernateProperties">
            <props>
              <prop key="hibernate.dialect">
                   org.hibernate.dialect.SQLServerDialect</prop>
              <prop key="hibernate.show_sql">true</prop>
            </props>
            </property>
            </bean>
    <bean id="userdao" class="chijiuclass.userdao">
          <property name="sessionFactory">
           <ref bean="mySessionFactory"/></property></bean>
    <bean id="upcheck" class="action.logincheck">
        </bean>
      <bean name="/LoginAction"
            class="action.LoginAction">
            <property name="upcheck">
              <ref bean="upcheck"/>
              </property>
            <property name="n">
              <value>7</value>
            </property>
            </bean>
      <bean id="userDAOProxy"
            class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
            lazy-init="true">
            <property name="proxyInterfaces">
               <list>
                  <value>chijiuclass.Iuserdao</value>
               </list>
               </property>
               <property name="target">
                 <ref bean="userdao"/></property>
             <property name="transactionManager">
               <ref bean="transactionManager"/></property>
             <property name="transactionAttributes">
               <props>
                 <prop key="*">PROPAGATION_REQUIRED,+MyCheckException</prop>
               </props>
              </property>
              </bean>
    </beans>

    //我的dao类
    package chijiuclass;
    import org.hibernate.*;
    import org.springframework.orm.hibernate3.*;
    public class userdao implements Iuserdao{ private HibernateTemplate hibernatetemplate;
    public void setSessionFactory(SessionFactory sessionFactory)
    {   
    System.out.println("进入了userdao");
    hibernatetemplate=new HibernateTemplate(sessionFactory);
    }
    public void insert(denlu den){
    System.out.println("进入了insert");
    hibernatetemplate.clear();
    hibernatetemplate.save(den);


    }
    public denlu find(String id){
    denlu den=(denlu)hibernatetemplate.get(denlu.class, id);
    return den;
    }
    }
      
    //test文件
    package chijiuclass;
    import chijiuclass.*;
    import java.util.*;
    import javax.servlet.http.*;
    import org.apache.struts.action.*;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.FileSystemXmlApplicationContext;
    import org.springframework.orm.hibernate3.HibernateTransactionManager;
    import form.denluform;public class test {
    public static void main(String[] args){
     ApplicationContext context=new FileSystemXmlApplicationContext("F:/Myeclipsworks/MyShopWeb/src/applicationContext.xml"); 
     Iuserdao user=(Iuserdao)context.getBean("userDAOProxy");
     denlu den=new denlu();
     den.setMage(5);
     den.setMemail("2344");
     den.setMname("ds");
     den.setMpassword("123");
     den.setMsex("女");
     den.setMtelphone("456786");
     den.setMusername("sz");
     user.insert(den);
     den=user.find("1");
     System.out.println("telphone"+den.getMtelphone());
    }}
      

  6.   

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:aop="http://www.springframework.org/schema/aop"
           xmlns:tx="http://www.springframework.org/schema/tx"
           xsi:schemaLocation="
           http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">  <!-- SessionFactory, DataSource, etc. omitted -->  <bean id="myTxManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <property name="sessionFactory" ref="mySessionFactory"/>
      </bean>  <aop:config>
        <aop:pointcut id="productServiceMethods" expression="execution(* product.ProductService.*(..))"/>
        <aop:advisor advice-ref="txAdvice" pointcut-ref="productServiceMethods"/>
      </aop:config>  <tx:advice id="txAdvice" transaction-manager="myTxManager">
        <tx:attributes>
          <tx:method name="increasePrice*" propagation="REQUIRED"/>
          <tx:method name="someOtherBusinessMethod" propagation="REQUIRES_NEW"/>
          <tx:method name="*" propagation="SUPPORTS" read-only="true"/>
        </tx:attributes>
      </tx:advice>把这个粘到你的xml文件顶部,把ref="mySessionFactory“换成你的sessionFactory ,改下(* product.ProductService.*(..))里改成(* 包名.类名.*.*(..))就ok了,还有,在txAdvice下添加要用到事物的方法名
      

  7.   

    我用了你的这个,还是不可以啊,我用的是sqlserver 2005,下面是我的运行的日志文件如下
    10:39:50,046  INFO Environment:514 - Hibernate 3.2.6
    10:39:50,078  INFO Environment:547 - hibernate.properties not found
    10:39:50,078  INFO Environment:681 - Bytecode provider name : cglib
    10:39:50,093  INFO Environment:598 - using JDK 1.4 java.sql.Timestamp handling
    10:39:50,734  INFO HbmBinder:300 - Mapping class: chijiuclass.denlu -> Manager
    10:39:50,953  INFO ConnectionProviderFactory:72 - Initializing connection provider: org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider
    10:39:52,125  INFO SettingsFactory:89 - RDBMS: Microsoft SQL Server, version: 9.00.1399
    10:39:52,125  INFO SettingsFactory:90 - JDBC driver: Microsoft SQL Server 2005 JDBC Driver, version: 1.2.2828.100
    10:39:52,171  INFO Dialect:152 - Using dialect: org.hibernate.dialect.SQLServerDialect
    10:39:52,203  INFO TransactionFactoryFactory:31 - Using default transaction strategy (direct JDBC transactions)
    10:39:52,343  INFO TransactionManagerLookupFactory:33 - No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended)
    10:39:52,343  INFO SettingsFactory:143 - Automatic flush during beforeCompletion(): disabled
    10:39:52,343  INFO SettingsFactory:147 - Automatic session close at end of transaction: disabled
    10:39:52,343  INFO SettingsFactory:162 - Scrollable result sets: enabled
    10:39:52,343  INFO SettingsFactory:170 - JDBC3 getGeneratedKeys(): enabled
    10:39:52,343  INFO SettingsFactory:178 - Connection release mode: on_close
    10:39:52,375  INFO SettingsFactory:205 - Default batch fetch size: 1
    10:39:52,375  INFO SettingsFactory:209 - Generate SQL with comments: disabled
    10:39:52,375  INFO SettingsFactory:213 - Order SQL updates by primary key: disabled
    10:39:52,375  INFO SettingsFactory:217 - Order SQL inserts for batching: disabled
    10:39:52,375  INFO SettingsFactory:386 - Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory
    10:39:52,375  INFO ASTQueryTranslatorFactory:24 - Using ASTQueryTranslatorFactory
    10:39:52,375  INFO SettingsFactory:225 - Query language substitutions: {}
    10:39:52,375  INFO SettingsFactory:230 - JPA-QL strict compliance: disabled
    10:39:52,375  INFO SettingsFactory:235 - Second-level cache: enabled
    10:39:52,375  INFO SettingsFactory:239 - Query cache: disabled
    10:39:52,375  INFO SettingsFactory:373 - Cache provider: org.hibernate.cache.NoCacheProvider
    10:39:52,375  INFO SettingsFactory:254 - Optimize cache for minimal puts: disabled
    10:39:52,375  INFO SettingsFactory:263 - Structured second-level cache entries: disabled
    10:39:52,421  INFO SettingsFactory:283 - Echoing all SQL to stdout
    10:39:52,421  INFO SettingsFactory:290 - Statistics: disabled
    10:39:52,421  INFO SettingsFactory:294 - Deleted entity synthetic identifier rollback: disabled
    10:39:52,421  INFO SettingsFactory:309 - Default entity-mode: pojo
    10:39:52,421  INFO SettingsFactory:313 - Named query checking : enabled
    10:39:52,562  INFO SessionFactoryImpl:161 - building session factory
    10:39:53,156  INFO SessionFactoryObjectFactory:82 - Not binding factory to JNDI, no JNDI name configured
    进入了userdao
    进入了insert
    Hibernate: insert into Manager (mname, mpassword, msex, mage, mtelphone, memail, musername) values (?, ?, ?, ?, ?, ?, ?)
    Hibernate: select denlu0_.musername as musername0_0_, denlu0_.mname as mname0_0_, denlu0_.mpassword as mpassword0_0_, denlu0_.msex as msex0_0_, denlu0_.mage as mage0_0_, denlu0_.mtelphone as mtelphone0_0_, denlu0_.memail as memail0_0_ from Manager denlu0_ where denlu0_.musername=?
    telphone456786