一个三表多对多关系,在执行了update后,数据顺利进入数据库。
但是查询的时候,生成的sql在数据库里执行没问题,但是hibernate跑下来,却查不到刚才插入的那条记录
必须重启tomcat才能够查到
1。插入的时候用的
getHibernateTemplate().update(obj);
getHibernateTemplate().merge(obj);
2。查询的时候是对session进行操作
logger.debug("exceuteSQL(String) strsql=" + sql);   
Session session = null;
        try {
            session = HibernateSessionFactory.getSession();
            Query query = session.createSQLQuery(sql);
            return query.list();
        } finally {
            if (session != null) {
                session.close();
            }
        }

解决方案 »

  1.   

    session.flush();
    手动的把数据刷进去,看看效果如何
      

  2.   

    或者使用事务:
    Transaction tx = session.beginTransaction();
    //具体操作
    tx.commit();
    session.close();
      

  3.   

    没有spring的情况下,需要手动刷新session
      

  4.   

    show_sql    设为true   试下   
      

  5.   

    有用到spring,
    getHibernateTemplate().save(obj);
    的时候为何还没持久化呢
      

  6.   

    另外,用getHibernateTemplate().save(obj);
    没异常,只是对象没有持久化
    如果用session.save
    则会报Unknown entity
      

  7.   

    自己帮自己顶一下吧,用了spring管理事务,照例说没理由
    getHibernateTemplate().update
    的时候对象没有持久化的呀