当前位置: 代码迷 >> Java Web开发 >> 关于hibernate保存的有关问题
  详细解决方案

关于hibernate保存的有关问题

热度:3917   发布时间:2013-02-25 21:19:12.0
关于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();
  相关解决方案