此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
楼主【Young_suse】截止到2008-07-21 21:00:28的历史汇总数据(不包括此帖):
发帖的总数量:3                        发帖的总分数:20                       每贴平均分数:6                        
回帖的总数量:17                       得分贴总数量:2                        回帖的得分率:11%                      
结贴的总数量:3                        结贴的总分数:20                       
无满意结贴数:0                        无满意结贴分:0                        
未结的帖子数:0                        未结的总分数:0                        
结贴的百分比:100.00%               结分的百分比:100.00%                  
无满意结贴率:0.00  %               无满意结分率:0.00  %                  
敬礼!

解决方案 »

  1.   

    可以叫spring来管理事务 
    你控制台SQL语句有打印出来不?
    看是否有insert语句,我再继续帮你找原因
      

  2.   

    <prop key="save*">PROPAGATION_REQUIRED </prop> 
    <prop key="update*">PROPAGATION_REQUIRED </prop> 
    <prop key="delete*">PROPAGATION_REQUIRED </prop> 
    <prop key="find*">PROPAGATION_REQUIRED,readOnly </prop> 
    </props> 
    </property> 
    </bean> UserDAOImpl类中有如下代码: 
        public void addUser(User user) { 
            try { 
                getHibernateTemplate().save(user); 
            } catch (RuntimeException re) { 
                throw re; 
            } 
        } 
    我没用过1.X但看你这个有点不对,你的key="save"也就是说save的PROPAGATION_REQUIRED 但你在UserDAOImpl里
    是addUser啊,也不是save开头啊.不知道对你有没有帮助.我也学习一下
      

  3.   

    用debug调试一下看看你的save到底执行的情况。
      

  4.   

    1 save 需要事务控制一下
    2 我怀疑你save的操作是更新。当然不会出现异常。  你查一下你的代码吧。比如
        public void addUser(User user) { 
            try { 
     System.out.println(user.getId()); // 我怀疑这个add其实是update
                getHibernateTemplate().save(user); 
            } catch (RuntimeException re) { 
                throw re; 
            } 
        } 
      

  5.   

    没有插入数据到数据库,但是又能通过get方法得到数据。说明你的操作只是在hibernate的缓存中进行,并没有实际操作数据库。
    你在你的save方法后,手动执行一下getHibernateTemplate().flush()方法吧。
      

  6.   

    如果是用调试的话,save()后
    就要加上this.setComplete();操作的结果才会保存进数据库.
      

  7.   

    我也感觉数据好像只在缓存中,没有写入数据库的原因没有提交事务,我用了7楼说的在save后加上getHibernateTemplate().flush(),还是没有把数据写入数据库。
      

  8.   

    save方法我在spring配置文件中声明了事务管理的,用HibernateTemplate()应该是自动提交事务的吧!
    这个add也应该不是更新吧,更新应该调用getHibernateTemplate().update(user)才对,而且我测试了更新操作,也不能把更新的数据持久到数据库,我调用update后,打开数据库,看到的还是更新前的数据。
      

  9.   

    你的SQL语句应该配置了 show_sql属性吧
    配置了以后还是看不到SQL语句说明根本就没执行这个方法
    你flush()  强制执行一下试试看
      

  10.   

    没有看到SQL语句是因为我没有配置show_sql属性。配好后控制台打印了insert语句,但是数据库里任然没有写入数据。执行getHibernateTemplate().save()后,我又添了一个语句getHibernateTemplate().flush(),但数据库中还是没有写入数据。我估计是事务没有提交的原因,但是我在spring中是声明了事务管理的,而且HibernateTemplate本身能够自动管理Session的。
      

  11.   

    那可能是没有 commit吧, 你自己进行手动提交 
      

  12.   

    我今天也遇到这个问题了 是因为事务没提交 或 是回滚了的结果
    原因是你集成了spring  用myeclipse生产的代码 你在hibernate.xml配置文件里加上
    <property name="connection.autocommit">true</property> 变搞定或者自己写dao 不用myeclipse生成代码  都行
      

  13.   

    哈哈,楼上正解。
    我就是用myeclipse生成的dao,而且没有配置<property name="connection.autocommit">true </property>
    非常感谢你。
    但是我还想问自己写dao就不用配置<property name="connection.autocommit">true </property>了吗?或者是自己写dao需要在代码中要加上事务提交的代码。
    比如之前我用的办法是:把getHibernateTemplate().save()用下面几句替换,
    session = getSession();
    session.beginTransaction();
    session.save(user);
    getSession().getTransaction().commit();
    但这样完全是在自己管理事务,没有用到spring的声明式事务管理功能。
      

  14.   

    <property name="connection.autocommit">true </property> 
    getHibernateTemplate().update(user); sql语句也出来了,可是查数据库发现数据没有更新过来。
      

  15.   


    getHibernateTemplate().flush();
    加上这句也不行,靠,服了
      

  16.   

    在hibernate.cfg.xml中加上<property name="connection.autocommit">true </property>就可以了
      

  17.   

    超级感谢了. 本来我还想在这里发贴的. <property name="connection.autocommit">true </property>
    加上这句之后问题解决了.
      

  18.   

    <property name="connection.autocommit">true </property>
    可是为什么不会提交呢 
      

  19.   

    太感谢了..我也遇到这样的问题了
    用<property name="connection.autocommit">true </property>
    就可以了.
      

  20.   

    我遇到了同样的问题
    我在hibernate.cfg.xml中加上<property name="connection.autocommit">true </property>
    还是不行啊
      

  21.   

    太感谢了,弄了一上午,同样的问题<property name="connection.autocommit">true </property>
    强顶呀
      

  22.   

    同样的问题,我还没有hibernate.cfg.xml文件,怎么配置:<property name="connection.autocommit">true </property>
    ???
      

  23.   

    我也解决了,非常感谢。前面有位朋友还是没有存进数据库有可能是主键的生成方法没有设置正确的缘故。没有hibernate.cfg.xml文件,那可以放到spring配置文件里面。
      

  24.   

    我发生了一下几个问题,并说下怎么解决的。
    1.没有hibernate.cfg.xml文件可以放到spring配置的代码里面。
    2.前面还是没有存进数据库,检查数据格式。后头发现是hibernate配置bean主键类型没有配置好。
      

  25.   

    没解决的人是不是<bean id="datasource">里配上
    <property name="defaultAutoCommit" value="true"/>试试
      

  26.   

    spring 加了下面的代码打印 是select 语句  我是保存的 怎么是select 语句呢
    <property name="defaultAutoCommit" value="true"/>
    后台打印:
    Hibernate: select hibernate_sequence.nextval from dual  然后跳转到错误页面???