Java 当id不在数据库中时,Session.load返回调用异常

Java 当id不在数据库中时,Session.load返回调用异常,java,hibernate,Java,Hibernate,如果我调用Session.load(Class,Serializable),例如Session.load(Class,1L),其中数据库中没有id=1的行,则返回的javassist代理(?)是com.sun.jdi.InvocationException。我正在努力理解这里发生了什么-当然它应该简单地返回null 如果我在session.load(…)中使用了LockOptions,它会抛出一个Hibernate异常,表示该行不存在-这对我来说比前者更有意义 这就是我正在努力编写的代码: pu

如果我调用
Session.load(Class,Serializable)
,例如
Session.load(Class,1L)
,其中数据库中没有id=1的行,则返回的javassist代理(?)是
com.sun.jdi.InvocationException
。我正在努力理解这里发生了什么-当然它应该简单地返回
null

如果我在
session.load(…)
中使用了
LockOptions
,它会抛出一个Hibernate异常,表示该行不存在-这对我来说比前者更有意义

这就是我正在努力编写的代码:

public MyClass ensureEntity(Long id) {
    MyClass entity = (MyClass)Session.load(Class<MyClass>, 1L);
    if(entity == null) {
        entity = new MyClass(id);
        getSession().saveOrUpdate(entity);
    }
    return entity;
}
公共MyClass安全性(长id){
MyClass实体=(MyClass)会话.load(类,1L);
if(实体==null){
实体=新的MyClass(id);
getSession().saveOrUpdate(实体);
}
返回实体;
}
使用
get()
load()
应引发异常。从加载()的

您不应该使用此方法来确定实例是否存在(改为使用get()。使用此选项仅检索假定存在的实例,不存在将是一个实际错误

使用
get()
load()
应引发异常。从加载()的

您不应该使用此方法来确定实例是否存在(改为使用get()。使用此选项仅检索假定存在的实例,不存在将是一个实际错误