Reputation: 1365
I'm maintaining a cache of objects across hibernate sessions by storing (possibly-detached) objects in a map. When the cache gets a hit, I test if the object is already part of the session with Session.contains(object)
. If not, I re-attach it with Session.lock(object, LockMode.NONE)
.
The problem is, if the same object was loaded previously in the session, it throws a org.hibernate.NonUniqueObjectException. Given a detached instance, I see no way to find out in advance if this exception will get thrown, without possibly hitting the database.
There are a couple workarounds:
Neither of these are as clean as checking the session in advance for an object class + id.
Is there any way to do that?
Upvotes: 11
Views: 17401
Reputation: 570635
I'm maintaining a cache of objects across hibernate sessions
Not a direct answer but why don't you use Hibernate L2 cache for this instead of reinventing the wheel?
Upvotes: 0