Hi,
I have Seam 2.1.1 on Glassfish and it mostly works well or probably it works 100% but I'm expecting something that doesn't supposed to work the way I'm expecting.
I have following config for the EntityManager:
<persistence:entity-manager-factory name="someDS"/> <persistence:managed-persistence-context name="entityManager" auto-create="true" entity-manager-factory="#{someDS}"/>
Where 'someDS' is configured to use Hibernate MySQLDialect.
EntityManager is injected by Seam into the POJO with CONVERSATION Scope and the same Conversation is maintained for several pages.
I have a problem with multiple sessions (several browsers) when some entity is updated from one session (and i see the update commited in the database), but when another instance of this entity is reloaded by another session (entityManager) it still has the old data.
I tried to load it using find() and JPQL but the result is the same, - looks like the entityManager loading the entity from the cache.
Is it expected?
My thought was that all entityManager instances running in the same application will be updated to exclude the 'dirty' entity from the cache.
How can I force the entityManager to load it from Database instead of cache?
Thanks,
Each EntityManager has its own cache.
Use entityManager.refresh(entity) to reload the state from DB.