wbs5520 2011-09-20 21:10
浏览 202
已采纳

求高手帮我看看这个hibernate的问题啊!

在record里面没有设置id的值,因为在数据库里面的自增的!
public long insertUser(WebUser record) {
Session session=null;
long id=0;
try{
session=sessionFactory.getCurrentSession();
session.beginTransaction();
session.save(record);
id=record.getId();
session.getTransaction().commit();
}catch(HibernateException e){
e.printStackTrace();
}finally{

    }
    return id;
}

上面这段是可以得到id的,但是我觉得应该是得不到啊!因为我觉得要得到这个应该要先commit之后然后再从数据库里面取出来然后才能得到啊!但是这里为什么能拿到啊!而且上面的程序没session.close,是因为如果关了就会报错,即使在finally里面关都不行,求高手解释哈!

  • 写回答

13条回答

  • iteye_12008 2011-09-21 22:40
    关注

    按常理来说,save时因该是将该插入操作保留在数据库缓存中,只有commit之后,才会真正的执行到数据库中,也就是只有commit之后,才能真正的获取真实ID。不过这里要看一下,你hbm.xml文件中的ID字段的所采用的主键生成方式,Hibernate提供了多种复杂的主键生成支持。如:assigned,hilo,seqilo,incement,identity,native....等等。。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(12条)

报告相同问题?