0
如果我呼叫Session.load(Class, Serializable)
,例如, Session.load(Class<MyClass>, 1L)
其中id = 1的數據庫中沒有行,返回的javassist代理(?)是com.sun.jdi.InvocationException
。我很努力地理解這裏發生了什麼 - 當然,它應該簡單地返回null
?當id不在數據庫中時Session.load返回InvocationException
如果我在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;
}