Hibernate中查询数据库的一个菜鸟问题

来源:百度知道 编辑:UC知道 时间:2024/05/06 02:34:59
这是我项目里用以查询数据的类的代码
public class HibTest2 {
private SessionFactory sf = new Configuration().configure().buildSessionFactory();

public User get(Integer id){
Session session = sf.openSession();
User user ;
try{
user = (User)session.get(User.class, id);
}catch(IllegalArgumentException e){
System.out.println("不存在此ID");
e.printStackTrace();
user = null;
}finally{
session.close();
}
return user;
}
}

大致意思就是在jsp页面上输入一个值,然后一直传到这个HibTest2类里面的get方法,参数id就是jsp上输入的那个值
然后利用这个id查询数据库表里面的对应id的值
在我运行的时候一般如果我输入的值是表里面有的话就能顺利的查询出来的,但是如果这个值是表里面没有的,就会报出异常,但是没有输出我在catch里面写的"不存在此ID"
这是怎么回事呢?请各位高手教我怎么把代码完善,谢谢~~
谢谢1楼的建议
PS:我有把catch改成Exception,都是一样的

建议没找到不要抛异常。因为一般程序中只有程序错误,比如:网络中断什么才会准谁抛异常。

像这种如果你没有找到的话,可以这样

try{
user = (User)session.get(User.class, id);
//判断user是否为空值.如果是空
if(user ==null || user.equals("")){
//如果是空。将其转发到主页提示。说没有找到。
}
}catch(IllegalArgumentException e){
System.out.println("不存在此ID");
e.printStackTrace();
user = null;
}

你把id大写成ID试试

有可能出现的异常不是 IllegalArgumentException ,你把异常类型改成Exception 看看

楼上说得对,把IllegalArgumentException 换成Exception肯定有了