public void save(SUserPref transientInstance) {
log.debug("saving SUserPref instance");
try {
getHibernateTemplate().save(transientInstance);
log.debug("save successful");
} catch (RuntimeException re) {
log.error("save failed", re);
throw re;
}
}

解决方案 »

  1.   

    错误都没贴出来,叫我们怎么知道你错在哪...说不定你save的时候有的字段值不允许问空,主键***等问题导致无法插入数据!
      

  2.   

    没有任何错误,就是数据库里没有反应.如果有错误,第一个贴出来了.这个代码也是reverse engineering table时候自动生成的.
    如果自己写session,然后调用session.save就加上Transaction是可以查到数据.
      

  3.   

    用getHibernateTemplate()调用相关查询就只能查到多少条数据,不能查到具体数据.如果调用session(并加上Transaction)的方法,一切都工作正常...
    我就不知道为什么这个没有反应? 有没有用这个成功的?
      

  4.   

    Transaction t=session.beginTransaction();
    .................
    t.commit();
      

  5.   

    用的是MYSQL数据库的话,MYSQL默认是不支持事务的
    要改当中的设置
      

  6.   

    是oracle,
         public void save(SUserPref transientInstance) {
    log.debug("saving SUserPref instance");
    try {
    Transaction action = session.beginTransaction();
    getHibernateTemplate().save(transientInstance);
    getHibernateTemplate().flush();
    action.commit();
    System.out.println("save successful"+transientInstance);
    log.debug("save successful");
    } catch (RuntimeException re) {
    log.error("save failed", re);
    throw re;
    }
    }上面代码执行后,数据库还是没有反应,console上面打印出insert into语句.
      

  7.   

    改用saveOrUpdate()也不行吗?检查下配置文件或其它。
      

  8.   

    是的.用saveOrUpdate()也是不行.applicationContext.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"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
    <bean id="sessionFactory"
    class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
    <property name="configLocation"
    value="classpath:hibernate.cfg.xml">
    </property>
    </bean>
    <bean id="SUserPrefDAO"
    class="com.seagate.calib.bean.SUserPrefDAO">
    <property name="sessionFactory">
    <ref bean="sessionFactory" />
    </property>
    </bean>
    <bean id="SUdaDAO" class="com.seagate.calib.bean.SUdaDAO">
    <property name="sessionFactory">
    <ref bean="sessionFactory" />
    </property>
    </bean></beans>hibernate.cfg.xml 如下:
    <?xml version='1.0' encoding='UTF-8'?>
    <!DOCTYPE hibernate-configuration PUBLIC
              "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
              "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"><!-- Generated by MyEclipse Hibernate Tools.                   -->
    <hibernate-configuration> <session-factory>
    <property name="connection.username">par</property>
    <property name="connection.url">
    jdbc:oracle:thin:@101.112.10.216:1521:prs
    </property>
    <property name="dialect">
    org.hibernate.dialect.Oracle9Dialect
    </property>
    <property name="myeclipse.connection.profile">
    Paris_stg
    </property>
    <property name="connection.password">pwpa</property>
    <property name="connection.driver_class">
    oracle.jdbc.driver.OracleDriver
    </property>
    <property name="show_sql">true</property>

    <mapping resource="com/seagate/calib/bean/SUserPref.hbm.xml" />
    <mapping resource="com/seagate/calib/bean/SUda.hbm.xml" />
    </session-factory></hibernate-configuration>
    SUserPref.hbm.xml如下:
    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <!-- 
        Mapping file autogenerated by MyEclipse Persistence Tools
    -->
    <hibernate-mapping>
        <class name="com.seagate.calib.bean.SUserPref" table="S_USER_PREF" schema="PARIS">
            <composite-id name="id" class="com.seagate.calib.bean.SUserPrefId">
                <key-property name="site" type="java.lang.String">
                    <column name="SITE" length="2" />
                </key-property>
                <key-property name="facility" type="java.lang.String">
                    <column name="FACILITY" length="2" />
                </key-property>
                <key-property name="userId" type="java.lang.String">
                    <column name="USER_ID" length="8" />
                </key-property>
            </composite-id>
            <property name="pcHomePage" type="java.lang.String">
                <column name="PC_HOME_PAGE" length="40" not-null="true" />
            </property>
        </class>
    </hibernate-mapping>
      

  9.   

    你的getHibernateTemplate()中用到的session跟你得到事务的那个session不是同一个session,你这样开启事务对
    getHibernateTemplate()中的session根本不起作用。看看spring的声明式事务管理吧!
      

  10.   


    你事务添加在那啊!?
    spring 配置文件里面加上:
    <bean id="transactionManager"
    class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory" />
    </bean>
      

  11.   

    回19楼,看看spring的声明式事务管理吧! 具体如何声明事务管理在spring?
      

  12.   

    20楼,兄弟,如何在dao里面调用transactionManager?
      

  13.   

    我把我做的个例子配置发给你看看,你再针对你的改改
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"> <bean id="dataSource"
    class="com.mchange.v2.c3p0.ComboPooledDataSource"
    destroy-method="close">
    <!-- 配置数据源连接的数据库URL -->
    <property name="jdbcUrl"
    value="jdbc:mysql://localhost:3306/blog" />
    <!-- 配置连接数据源所用的驱动 -->
    <property name="driverClass" value="com.mysql.jdbc.Driver" />
    <!-- 配置连接数据源所用的用户名 -->
    <property name="user" value="root" />
    <!-- 配置连接数据源所用的密码 -->
    <property name="password" value="123456" />
    <!-- 配置连接池最大连接数 -->
    <property name="maxPoolSize" value="40" />
    <!-- 配置连接数池最小连接数 -->
    <property name="minPoolSize" value="1" />
    <!-- 配置连接数池初始连接数 -->
    <property name="initialPoolSize" value="1" />
    <!-- 配置连接数池里连接的最大空闲时间 -->
    <property name="maxIdleTime" value="20" />
    </bean> <!-- 定义了hibernate的sessionFactory -->
    <bean id="sessionFactory"
    class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <!-- 指定sessionFactory所需的数据源 -->
    <property name="dataSource" ref="dataSource" />
    <!-- 添加系统所使用的映射文件 -->
    <property name="mappingResources">
    <list>
    <value>com/model/Blog.hbm.xml</value>
    <value>com/model/Comment.hbm.xml</value>
    </list>
    </property>
    <!-- 指定hibernate的属性 -->
    <property name="hibernateProperties">
    <props>
    <!-- 连接数据库所用的方言 -->
    <prop key="hibernate.dialect">
    org.hibernate.dialect.MySQLDialect
    </prop>
    <!-- 是否显示hibernate数据库访问中的sql语句 -->
    <prop key="show_sql">true</prop>
    <prop key="hibernate.hbm2ddl.auto">update</prop>
    <prop key="hibernate.jdbc.batch_size">20</prop>
    </props>
    </property>
    <!-- 
    <property name="configLocation"
    value="classpath:hibernate.cfg.xml">
    </property>
    -->
    </bean> <!-- 配置Blog Dao组件 -->
    <bean id="blogDao" class="com.dao.impl.BlogDaoHibernate">
    <!-- 依赖注入sessionFactory引用 -->
    <property name="sessionFactory" ref="sessionFactory" />
    <!-- 设置每页显示的记录数 -->
    <property name="pageSize" value="3" />
    </bean> <!-- 配置Comment Dao组件 -->
    <bean id="commentDao" class="com.dao.impl.CommentDaoHibernate">
    <!-- 依赖注入sessionFactory引用 -->
    <property name="sessionFactory" ref="sessionFactory" />
    <!-- 设置每页显示的记录数 -->
    <property name="pageSize" value="3" />
    </bean> <!-- 配置Blog业务逻辑组件 -->
    <bean id="blogManager"
    class="com.tzb.service.impl.BlogManagerImpl">
    <!-- 依赖注入业务逻辑组件所必需的DAO组件 -->
    <property name="blogDao" ref="blogDao" />
    <property name="commentDao" ref="commentDao" />
    </bean> <!-- 配置事务管理器 -->
    <bean id="transactionManager"
    class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <!-- 为事务管理器依赖注入sessionFactory实例 -->
    <property name="sessionFactory" ref="sessionFactory" />
    </bean> <!-- 配置事务拦截器 -->
    <bean id="transactionInteceptor"
    class="org.springframework.transaction.interceptor.TransactionInterceptor">
    <!-- 事务拦截器bean需要依赖注入一个事务管理器 -->
    <property name="transactionManager" ref="transactionManager" />
    <property name="transactionAttributes">
    <!-- 下面定义事务传播属性 -->
    <props>
    <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
    <prop key="*">PROPAGATION_REQUIRED</prop>
    </props>
    </property>
    </bean> <!-- 定义BeanNameAutoProxyCreator -->
    <bean
    class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
    <!-- 指定满足那些bean name的bean自动生成业务代理 -->
    <property name="beanNames">
    <!-- 下面是所有需要自动创建事务代理的bean -->
    <list>
    <value>blogManager</value>
    </list>
    </property>
    <!-- 下面定义BeanNameAutoProxyCreator所需的事务拦截器 -->
    <property name="interceptorNames">
    <list>
    <value>transactionInteceptor</value>
    </list>
    </property>
    </bean>
    <!-- 配置TestStruts2 Web Action -->
    <bean id="ts2" class="com.tzb.web.action.TestStruts2">
    <!-- 依赖注入业务逻辑组件所必需的DAO组件 -->
    <property name="blogManager" ref="blogManager" />
    </bean>
    </beans>
      

  14.   

    兄弟,看来你的成功的.能够向您请教.我的msn: [email protected]
      

  15.   

    当然也可以这样:
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"> <!-- 定义了hibernate的sessionFactory -->
    <bean id="sessionFactory"
    class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="configLocation"
    value="classpath:hibernate.cfg.xml">
    </property>
    </bean> <!-- 配置Blog Dao组件 -->
    <bean id="blogDao" class="com.dao.impl.BlogDaoHibernate">
    <!-- 依赖注入sessionFactory引用 -->
    <property name="sessionFactory" ref="sessionFactory" />
    <!-- 设置每页显示的记录数 -->
    <property name="pageSize" value="3" />
    </bean> <!-- 配置Comment Dao组件 -->
    <bean id="commentDao" class="com.dao.impl.CommentDaoHibernate">
    <!-- 依赖注入sessionFactory引用 -->
    <property name="sessionFactory" ref="sessionFactory" />
    <!-- 设置每页显示的记录数 -->
    <property name="pageSize" value="3" />
    </bean> <!-- 配置Blog业务逻辑组件 -->
    <bean id="blogManager"
    class="com.tzb.service.impl.BlogManagerImpl">
    <!-- 依赖注入业务逻辑组件所必需的DAO组件 -->
    <property name="blogDao" ref="blogDao" />
    <property name="commentDao" ref="commentDao" />
    </bean> <!-- 配置事务管理器 -->
    <bean id="transactionManager"
    class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <!-- 为事务管理器依赖注入sessionFactory实例 -->
    <property name="sessionFactory" ref="sessionFactory" />
    </bean> <!-- 配置事务拦截器 -->
    <bean id="transactionInteceptor"
    class="org.springframework.transaction.interceptor.TransactionInterceptor">
    <!-- 事务拦截器bean需要依赖注入一个事务管理器 -->
    <property name="transactionManager" ref="transactionManager" />
    <property name="transactionAttributes">
    <!-- 下面定义事务传播属性 -->
    <props>
    <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
    <prop key="*">PROPAGATION_REQUIRED</prop>
    </props>
    </property>
    </bean> <!-- 定义BeanNameAutoProxyCreator -->
    <bean
    class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
    <!-- 指定满足那些bean name的bean自动生成业务代理 -->
    <property name="beanNames">
    <!-- 下面是所有需要自动创建事务代理的bean -->
    <list>
    <value>blogManager</value>
    </list>
    </property>
    <!-- 下面定义BeanNameAutoProxyCreator所需的事务拦截器 -->
    <property name="interceptorNames">
    <list>
    <value>transactionInteceptor</value>
    </list>
    </property>
    </bean>
    <!-- 配置TestStruts2 Web Action -->
    <bean id="ts2" class="com.tzb.web.action.TestStruts2">
    <!-- 依赖注入业务逻辑组件所必需的DAO组件 -->
    <property name="blogManager" ref="blogManager" />
    </bean>
    </beans>
      

  16.   

    兄弟,急需和你探讨. 能否加我msn:[email protected]
      

  17.   

    csdn可以在线聊天,发信息给你了
      

  18.   

    问题原因1.你没配数据源吧,dataSource.
    2.就算配了,你没往sessionFactory的bean放。
    <bean id="dataSource"
    class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName"
    value="com.mysql.jdbc.Driver">
    </property>
    <property name="url" value="jdbc:mysql://127.0.0.1:3306/mydb"></property>
    <property name="username" value="root"></property>
    <property name="password" value="root"></property>
    </bean> <bean id="sessionFactory"
    class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="configLocation"
    value="classpath:hibernate.cfg.xml">
    </property>
    <property name="dataSource">
        <ref bean="dataSource" />
    </property>
    </bean>
    试试还有问题吗?