It does make sense to have a proxy to an nonexistant object. From the docs (emphasis mine):
Quote:
Note that load() will throw an unrecoverable exception if there is no matching database row. If the class is mapped with a proxy, load() just returns an uninitialized proxy and does not actually hit the database until you invoke a method of the proxy. This behaviour is very useful if you wish to create an association to an object without actually loading it from the database.
There's no way it can throw an exception for nonexistance before hitting the database. load() should only be used if you are sure that the object exists.