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

关于hibernate的保存问题?
问题一?
public DiDe getById(String id) {

DiDe di=(DiDe)getSession().load(DiDeHibernate.class, id);
return di;
}
比如这个id主键为string类型的话,上面的方法有时候好用,有时候就报错;这个id为string类型的话,load,get对象方法都能用不?如果不能,怎么序列化此string id;



承接上个问题?
userService.save(user);
Hibernate的保存会返回一个序列化的id,就是主键吧;如果主键是string类型;
String id = userService.save(user);这样写报错?
这样怎么得到这个id呢?

保存后,通过user.getId();得到的是0.。。。不是刚保存那条记录的主键id

------解决方案--------------------
这问题有点意思,我般ID有的是int,看了下hibernate api中get和load方法,string应该可以的,下面这样写
userService.save(user);
session.commit();
Stirng id = user.gerId(),估计是你没有commit所以数据库中没有值所有user get不到id
------解决方案--------------------
引用:
这问题有点意思,我般ID有的是int,看了下hibernate api中get和load方法,string应该可以的,下面这样写
userService.save(user);
session.commit();
Stirng id = user.gerId(),估计是你没有commit所以数据库中没有值所有user get不到id

楼上正解,不过你的Hibernate没有用到事务管理么?配置文件中配置事务管理
------解决方案--------------------
id最好用int,而且自增的id都按int处理。
-----有时候就报错,这句会报什么错?