遇到个问题:Hibernate的 
一个WEB程序 
首先   页面添加一条回复,添加完后,查看数据库,数据插入到了数据库中。然后调用查找,却查不到数据。 
但重启tomcat后 调用同样的查询方法又可以查到结果,自己想不出问题在哪里,大家帮忙指教一下。 

解决方案 »

  1.   

    也不知道你是怎么使用的hibernate,
    感觉是不是缓存的问题
      

  2.   

    把你的hibernate配置文件贴出来看看。
    我估计你是重新建了表。。
    例如在配置文件里有
    hibernate.hbm2ddl.auto=create-drop
      

  3.   

    记得commit,我以前遇到过这种情况,哈哈
      

  4.   


    就是下面这个
    <?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="dialect">
    org.hibernate.dialect.MySQLDialect
    </property>
    <property name="connection.url">
    jdbc:mysql://127.0.0.1:3306/hibernate
    </property>
    <property name="connection.username">root</property>
    <property name="connection.password">root</property>
    <property name="connection.driver_class">
    com.mysql.jdbc.Driver
    </property>
    <property name="myeclipse.connection.profile">mysql</property>
    <mapping resource="com/cissst/entity/Reply.hbm.xml" />
    <mapping resource="com/cissst/entity/Topic.hbm.xml" />
    <mapping resource="com/cissst/entity/Users.hbm.xml" /></session-factory></hibernate-configuration>
      

  5.   

    应该没什么大问题啊,你程序怎么写的 ,有没提交事务,tomcat停掉后,数据库还有这个记录吗?
      

  6.   

    还有三个实体类的映射文件也贴出来:
    <?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"><hibernate-mapping>
    <class name="com.cissst.entity.Reply" table="td_reply">
    <id name="id" column="r_id">
    <generator class="native" />
    </id>
    <property name="content" column="td_content" />
    <property name="replayTime" column="td_replayTime" />
    <many-to-one name="topic" column="t_id" class="com.cissst.entity.Topic" />
    <many-to-one name="users" column="u_id" class="com.cissst.entity.Users"/>
    </class>
    </hibernate-mapping>_____________________________________________________________________________<?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"><hibernate-mapping>
       <class name="com.cissst.entity.Topic" table="tb_topic">
       <id name="id" column="t_id">
       <generator class="native"/>
       </id>
       <property name="title" column="td_title"/>
       <property name="content" column="td_content"/>
       <property name="creattime" column="td_creattime"/>
       <property name="browseTimes" column="td_browseTimes"/>
       <property name="fcount" column="td_fcount"></property>
       <property name="delflag" column="td_delflag"></property>
       <many-to-one name="users" column="u_id" />
       <set name="reply" >
       <key column="t_id"/>
       <one-to-many class="com.cissst.entity.Reply"/>
       </set>
       </class>
    </hibernate-mapping>_______________________________________________________________________________<?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"><hibernate-mapping>
       <class name="com.cissst.entity.Users" table="tb_users">
       <id name="id" column="u_id">
       <generator class="native"/>
       </id>
       <property name="username" column="td_username"/>
       <property name="password" column="td_password"/>
       <property name="email" column="td_email"/>
       <property name="homepage" column="td_homepage"/>
       <property name="levels" column="td_levels"/>
       <property name="photo" column="td_photo"/>
       <property name="qq" column="td_qq"/>
       <property name="oicq" column="td_oicq"/>
       <property name="ip" column="td_ip"/>
       <property name="createtime" column="td_createtime"/>
       <property name="delflag" column="td_delflag"/>
       <set name="reply" >
       <key column="u_id"/>
       <one-to-many class="com.cissst.entity.Reply"/>
       </set>
        <set name="topic" >
       <key column="u_id"/>
      <one-to-many class="com.cissst.entity.Topic"/>
       </set>  </class>
    </hibernate-mapping>
      

  7.   


    嗯。当时查数据库里有记录,但hql语句查不到。tomcat停掉后数据库记录也在。tomcat重启后,还是运行原来的查询语句就可以从数据库里取到结果。
      

  8.   

    我遇到过不能读数据的情况,后来查到的原因是因为用myeclipse生成的代码中,通过SessionFactory获取session的时候,它使用了LocalThread,这样做的结果,就是你单机测试的时候,每次获取的都是同一个Session,解决办法就是改掉获取Session的代码,不用LocalThread。不知道你是不是这个情况,仅供参考。
      

  9.   

    谢谢大家了,问题解决了,是session的问题。Hibernate在执行完HQL语句的时候session没有关闭。关了一下就好了。