当前页面: 开发资料首页 → JSP 专题 → Hibernate3.0 保存数据不成功..大家帮忙呀..
Hibernate3.0 保存数据不成功..大家帮忙呀..
摘要: Hibernate3.0 保存数据不成功..大家帮忙呀..
我是用hibernate syschronizer生成map文件的.
admin.hbm如下:
<?xml version="1.0"?>
hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
name="Admin"
table="ADMIN"
>
true
name="Id"
type="integer"
column="ID"
>
name="Name"
column="NAME"
type="string"
not-null="false"
length="100"
/>
adminado如下:
package aa.dao;
import java.util.HashMap;
import java.util.Iterator;
import java.util.ListIterator;
import java.util.Map;
import org.hibernate.Criteria;
import org.hibernate.EntityMode;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.criterion.Expression;
import org.hibernate.mapping.List;
import aa.base.BaseAdmiinDAO;
import aa.Admiin;
import aa.HibernateSessionFactory;
public class AdmiinDAO extends BaseAdmiinDAO implements aa.dao.iface.AdmiinDAO
{
public AdmiinDAO()
{
}
public AdmiinDAO(Session session)
{
super(session);
}
public static void main(String args[])
{
try{
Configuration cfg = newConfiguration().configure();
SessionFactory sFactory = cfg.buildSessionFactory() ;
Session session = sFactory.openSession();
Admin admin = new Admiin();
admin.setName("拉登");
session.save(admin);
session.flush();
}
catch(Exception e)
{e.printStackTrace();}
}
}
运行此文件后报如下信息:
Hibernate: select max(ID) from ADMIIN
Hibernate: insert into ADMIIN (NAME, ID) values (?, ?)
数据库里不能保存呀..大家帮帮忙呀...
上面ADMIIN 就是admin.书写错误呀..
请大家帮帮忙呀..困了我好几天了..
你忘记开事务并且提交了,改成:
Session session = sFactory.openSession();
Admin admin = new Admiin();
admin.setName("拉登");
session.beginTransaction();
session.save(admin);
session.flush();
session.getTranscation().commit();
忘记提交了吧,呵呵
调用commit()就可以了,呵呵
多谢hbwhwang(catmiw的ID已经停用,现在用这个),usxue(尘飞扬)
果然是如此呀.为什么一定要开事务呢?
我不开事务作如下修改也可以.能解释下吗?
在main()里这样写也可以的.
_RootDAO.initialize();
AdmiinDAO admiindao =new AdmiinDAO();
Admiin admiin = new Admiin();
admiin.setName("test");
admiindao.save(admiin);