如果我拨打Session.load(Class, Serializable)
,例如Session.load(Class<MyClass>, 1L)
数据库中没有id = 1的行,则返回的javassist代理(?)是com.sun.jdi.InvocationException
。我正在努力了解这里发生的事情-当然,它应该只返回null
?
如果我在LockOptions
中使用了session.load(...)
,它将抛出一个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;
}
最佳答案
使用get()
。预计load()
会引发异常。来自load()
的the documentation:
您不应使用此方法来确定实例是否存在(使用get()代替)。仅用于检索假定为存在的实例,其中不存在将是实际错误。
关于java - ID不在数据库中时,Session.load返回InvocationException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4134457/