关于Hibernate里的Session.get(Class clazz, Serializable id)方法的疑问
本人写了一个根据数据库id值获取某行记录的方法:
代码
static User getUser(int id) {
Session session = null;
try {
session = HibernateUtil.getSession();
User user = (User)session.get(User.class, id); return user;
}finally {
if(null != session) {
session.close();
}
}
}
Session session = null;
try {
session = HibernateUtil.getSession();
User user = (User)session.get(User.class, id); return user;
}finally {
if(null != session) {
session.close();
}
}
}
我的意思很明确, 就是根据用户传入的id值来获得某行的记录信息.
当写完以上代码后, MyEclipse却出现了一个错误提示: 它说我的 id 应该为Serializable类型, 而不应该是int类型的.
我晕, 那我这段代码岂不是废了?
麻烦大家帮我看看出错在什么地方, 谢谢!
可能是JDK版本问题,你改一下最新的版本,如果不行的话,就这样写:
User user = (User)session.get(User.class, new Integer(id));
这样就可以了!
另外,说一下,Serializable是序列化接口,基本数据类型都实现了此接口,如:Integer,Double,String等,放入一个Serializable类型的值作为主键,这样做的好处是,无论主键是自增长型的(如:int),还是String型的都可以获取到对象!
User user = (User)s.get(userClass,iid); //提示说get方法错误
这个地方的iid只能接受一个对象,你的iid是基本数据类型不是数据对象,改为:
iid改为 new Integer(iid)