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

load方法与get方法不同,对于数据库表中不存在的id, get方法返回null,load方法则报出ObjectNotFoundException异常。因为load方法默认的认为该id一定是在数据库表中存在的。

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

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

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

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

错误。解决这个的办法,要么去掉延迟加载,要么不用load方法。

原文地址:https://www.cnblogs.com/chaohi/p/2330407.html