Description
GenericDelegator.findOne doesn't handle the cache consistently.
When it doesn't find anything, it puts GenericValue.NULL_VALUE in the cache. When trying to read from the cache it uses the getFromPrimaryKeyCache method, which returns null when GenericValue.NULL_VALUE was stored in the cache, just like for cache misses. So a not-found value in the cache is treated like a cache miss and the cache isn't actually used.