如果我拨打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/

10-14 05:18