您的位置:首页 > 其它

load方法在延迟加载时可能出现的错误。

2009-08-13 10:46 323 查看
load方法与get方法不同,对于数据库表中不存在的id, get方法返回null,load方法则报出ObjectNotFoundException异常。因为load方法默认的认为该id一定是在数据库表中存在的。

如果在dao中要利用load方法检索对象的话,那么就要小心它可能的异常,可以这么来处理:

public Article findById(java.lang.Integer id) {
log.debug("getting Article instance with id: " + id);
try {
Article instance = (Article) getHibernateTemplate().load(
"cn.duoduo.hibernate.Article", id);
return instance;
} catch (Exception re) {
log.error("get failed", re);
return null;
}
}


这样的话,如果查询的id在表中不存在,那么会返回null。

可是,如果在类级别设置了延迟加载lazy="true",那么,在执行load方法的时候,是不会出现异常的。但是当在页面或者action等业务

类中调用对象的非主键属性时,这时hibernate才真正的发出查询请求,于是出现异常,但是该异常已经不能被捕捉到了,于是程序会发生

错误。解决这个的办法,要么去掉延迟加载,要么不用load方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐