关于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();