On Wed, Sep 17, 2008 at 9:12 PM, Steve Ebersole <steve(a)hibernate.org> wrote:
If you use Hibernate EntityManager, get the Hibernate Session and use
Criteria to query by natural ID and the entity was deleted, you end up
with an EntityNotFoundException. I reported the issue as: HHH-3478
I have a patch which fixes this problem, but it's a hack. From the issue:
In StandardQueryCache, there is a "catch" which handles
"UnresolvableObjectException" but not "EntityNotFoundException"
catch ( UnresolvableObjectException uoe ) {
if ( isNaturalKeyLookup ) {
//TODO: not really completely correct, since
// the uoe could occur while resolving
log.debug( "could not reassemble cached result set" );
cacheRegion.evict( key );
return null;
}
I'm thinking that by keeping an association mapped in the query cache
-- but I'm thinking that's not the right spot --
EntityManager/Session.remove() could trigger a removal of any natural
ID criteria query as well. And so could any update, if the natural IDs
were mutable. Anyway, you'd get rid of this hack, possibly.