日期:2014-05-17  浏览次数:20598 次

关于hibernate保存的问题
我用hibernate sava()插入一条记录,然后我想取得刚刚插入到数据库中记录的ID(native自动增长的),
查了下,好像用merge()可以返回刚才保存对象的持久化状态。于是我写了下面代码:
User user = new User();
user.setUsername = "aaa";
user.setPassword = "aaa";
User u = (User)getHibernateTemplate.merge(user);
int id = u.getId();
但是取到的id为空,为什么?我代码写错了还是我理解错了?

------解决方案--------------------
用saveOrUpdate()就行的啊 你用saveOrUpdate()的总要传入一个对象的啊
你直接对那个对象 object.getId()就能取到了啊
------解决方案--------------------
探讨
User user = new User();
user.setUsername = ("aaa");
user.setPassword = ("aaa");
getHibernateTemplate.saveOrUpdate(user);
int id = user.getId();
你是说这样么?取不到呀!

------解决方案--------------------
探讨
还是不行,插入数据库已经成功了。我把代码贴出来,大家看看。

Java code
GameGameinfoForm gameform = (GameGameinfoForm) form;
GameGameinfo gameinfo = new GameGameinfo();
try {

BeanUtils.copyProperties(gameinfo, gameform);
Session session = HibernateSessionFactory.getSession();
Transaction t = session.beginTransaction();


------解决方案--------------------
你写的代码还没有执行保存操作,就把他取出来了,怎么会有值
------解决方案--------------------
Java code

 Transaction t = session.beginTransaction();
            getGameInfoDAO().savaorupdate(gameinfo);
            //Object obj = getGameInfoDAO().merge(gameinfo);
                        //这里gameinfo.getGameinfoId()取出来没值
           
            t.commit();//先提交~后取值
            
            request.setAttribute("Sid", gameinfo.getGameinfoId());
            request.setAttribute("message", "添加成功!");
            session.close();