use*_*577 5 session load hibernate exception
try {
x = session.load(...);
y = x;
}
catch(Exception e) {
//do something
}
Run Code Online (Sandbox Code Playgroud)
如果密钥不存在,将加载(...)抛出异常
此外,在上面的代码中,如果执行到达赋值y = x,是否保证在那时,x不为空?是否存在x在此时可以为空的情况?
简而言之:
x 加载后不会为空,所以也不会 yload()如果对象不存在,则可能存在也可能不存在异常load(),并且该对象不存在,则访问时会出现异常x或y.详细说明:
您是否在尝试确定密钥是否存在?或者你是假设它,但只是想处理异常?
请参阅文档,具体如下:
您不应该使用此方法来确定是否存在实例(
get()改为使用).仅用于检索您假定存在的实例,其中不存在将是实际错误.
从使用load()的"hibernate in action"一书中:
应用程序可以检索到持久化实例的有效引用(代理),而无需访问数据库以检索其持久状态.因此,
load()当它在缓存或数据库中找不到持久对象时,可能不会抛出异常; 访问代理时,将抛出异常.
所以:
如果您想知道该项目是否存在,请使用get(),而不是load().