当我用save()保存数据后,我发现mysql中除了刚刚save的数据外,其他原先有的都不见了!?这是为什么?
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"
>
<hibernate-mapping>
<class name="user.u" table="u">
<id name="id" column="id"></id>
<property name="name"></property>
</class>
</hibernate-mapping>public boolean insert(User usr) {
try {
SessionFactory sf = new Configuration().configure().buildSessionFactory();
Session session = sf.openSession();
Transaction ts = session.beginTransaction();
session.save(usr);
ts.commit();
return true;
}
catch(HibernateException e) {
e.printStackTrace();
}
return false;
}

解决方案 »

  1.   

    在hibernate.cfg.xml文件中加入这句试试
    <property name="hibernate.hbm2ddl.auto">update</property>
      

  2.   

    看看你在hibernate.cfg.xml文件中是不是设置这个了:
    hibernate.hbm2ddl.auto insert
    因为你每一次插入数据前都有一个读取Config,即加载配置的过程,在这个过程中,就有可能初始化你的数据库
      

  3.   

    你底层数据库的建立是手动建立还是通过hibernate反向建表?
    我怀疑是你没删除反向建表,所以每次save()的时候,又删除了所有的表,然后又建表,再插入数据,就只有这条数据了。