You mean you used the get() method of session. But in order to call get you have to pass in an id, which Hibernate sets in the proxy object, but does not go to the database to load the other data. the load() method does go to the database. so load() can return null if the record doesn't exist, and get can throw an exception if it doesn't exist. But the exception is not thrown in the load() call, it will be thrown when you try to access a property besides id from the resulting object.