我使用hibernate查询数据,数据正常,然后插入一条数据(手动插入的),刷新查询页面,数据还是没插入前的,不知道原因在那里?我使用的是list查询应该不牵扯缓存吧。public List select(){

Session session=HibernateSessionFactory.getSession();
Query query=session.createQuery("from a");
List list=query.list();
session.flush();
session.close();
return list;
}
hibernate配置文件如下<session-factory>
<property name="connection.username">root</property>
<property name="connection.url">
jdbc:mysql://localhost:3308/test
</property>
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>
<property name="myeclipse.connection.profile">mysql_5</property>
<property name="connection.password">meatin</property>
<property name="connection.driver_class">
com.mysql.jdbc.Driver
</property>

解决方案 »

  1.   

    我手工到数据库里插入的,用代码插入的也commit了。
      

  2.   

    楼上看看,hibernate配置文件,我都说了我在数据库里面手工插入的数据,贴个插入的代码
    public void insert(){
    Session session=HibernateSessionFactory.openSession();
    a value=new a();
    Transaction Tran=session.beginTransaction();
    value.setTtt("yy");
    session.save(value);
    Tran.commit();
    session.close();
    }
      

  3.   

    把你BEAN对象的xml映射文件贴出来。
      

  4.   

    楼主,你在hibernate.cfg.xml中配置了a这个类的映射文件吗?
    另外,请你帖一下a.hbm.xml中的相关配置。
      

  5.   

    我和你的问题一样   在JUnit中查询上来的List中是最新的数据   但在Action中用相同的代码查询上来的List就是为更新的数据   但是只要 更新其他表的数据后 再查找此表的数据就更新了    具体原因我也很郁闷呀。。   JUnit中测试就OK  放在Action中就出问题  附上我的代码:
    public ActionForward query(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response)
    throws Exception {
        SubjectManager manager = ManagerFactory.createSubjectManager();
        List subjectList = manager.getAllSubject();
        System.out.println("List.size()="subjectList.size());

        request.setAttribute("subjectList", subjectList);
        return mapping.findForward("success");
    }首先我向数据库里添加了3条记录  
    然后执行了上面的Action 
    此时输出     List.size()=3   并且Hibernate发出了查询语句
    然后再执行上面的Action   
    之后我在向数据库中添加3条记录 
    此时仍然输出  List.size()=3    Hibernate同样发出了查询语句然后在JUnit中写了个测试方法   同Action中的一样
    public void testShowSubject(){
        SubjectManager manager = ManagerFactory.createSubjectManager();
        List subjectList = manager.getAllSubject();
        System.out.println("List.size()="subjectList.size());}此时输出 List.size()=6     Hibernate发出了查询语句望高人能指点  谢谢
      

  6.   

    说错了顺序   更新下顺序
    我和你的问题一样   在JUnit中查询上来的List中是最新的数据   但在Action中用相同的代码查询上来的List就是为更新的数据   但是只要 更新其他表的数据后 再查找此表的数据就更新了    具体原因我也很郁闷呀。。   JUnit中测试就OK  放在Action中就出问题  附上我的代码:
    public ActionForward query(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response)
    throws Exception {
        SubjectManager manager = ManagerFactory.createSubjectManager();
        List subjectList = manager.getAllSubject();
        System.out.println("List.size()="subjectList.size());

        request.setAttribute("subjectList", subjectList);
        return mapping.findForward("success");
    }首先我向数据库里添加了3条记录  
    然后执行了上面的Action 
    此时输出     List.size()=3   并且Hibernate发出了查询语句
    之后我在向数据库中添加3条记录 
    然后再执行上面的Action   
    此时仍然输出  List.size()=3    Hibernate同样发出了查询语句然后在JUnit中写了个测试方法   同Action中的一样
    public void testShowSubject(){
        SubjectManager manager = ManagerFactory.createSubjectManager();
        List subjectList = manager.getAllSubject();
       
     System.out.println("List.size()="subjectList.size());}此时输出 List.size()=6     Hibernate发出了查询语句
      

  7.   

    我也遇到这问题了,hibernate3.1,Mysql5.1手工修改数据后查询不到
    Session session = HibernateSessionFactory.getSession();
    String queryString = "from TCase";
    Query queryObject = session.createQuery(queryString);
    List<TCase> tCaseList = queryObject.list();
    session.close();纠结了一下午,最后无奈加了事务解决了
    Session session = HibernateSessionFactory.getSession();
    Transaction t = session.beginTransaction();
    String queryString = "from TCase";
    Query queryObject = session.createQuery(queryString);
    List<TCase> tCaseList = queryObject.list();
    t.commit();
    session.close();求哪位大哥讲下这是什么原因。
      

  8.   

    这个我遇到过,郁闷了很长时间。后来发现重新部署下系统就OK了,或者是重新启动服务器具体的原因闹不清,可能跟hibernate的机制有关,也不带深究,反正系统插入时你把事务加上就不用重启服务器,手动的话重新部署把