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

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方法。

 

 

转载于:https://www.cnblogs.com/chaohi/archive/2009/08/13/2330407.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值