Hibernate hql没有看到更新

Hibernate hql没有看到更新,hibernate,hql,seam,Hibernate,Hql,Seam,我有两个共享数据库的应用程序 问题是,当从一个应用程序更新记录时,在从另一个应用程序进行HQL查询后,它不会得到新的更新,这是通过缓存实现的吗 我们使用的技术 seam,vaadin,jpa/hibernate <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" /> <property name="hibernate.cache.provider_c

我有两个共享数据库的应用程序 问题是,当从一个应用程序更新记录时,在从另一个应用程序进行HQL查询后,它不会得到新的更新,这是通过缓存实现的吗

我们使用的技术 seam,vaadin,jpa/hibernate

    <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
        <property name="hibernate.cache.provider_class"   value="org.hibernate.cache.EhCacheProvider" />
        <property name="hibernate.cache.use_second_level_cache"
            value="false" />
        <property name="hibernate.cache.use_query_cache" value="false" />
hql:
from User

您的方法是存储带有@Transactional注释的数据还是与Seam等效的其他方法,或者如果您使用的是编程事务,您是在创建和提交事务吗?我似乎记得,使用Spring将数据存储到数据库而不使用@Transactional的方法不会导致异常或其他错误,但不会简单地将数据提交到数据库中。刷新事务/db会话也可能有帮助。

数据已提交。此问题在被其他应用程序更新后重新调用查询如果使用JPA entityManager,则可以尝试entityManager.clear;如果在查询之前使用原始Hibernate会话,则可以尝试session.clear,以强制清除一级缓存。如果内存可用,JPA EntityManager和Hibernates的会话对象也应该有refreshobj-method,它可以绕过一级和二级缓存,从数据库中强制刷新。当不使用缓存时,您可能会看到一些性能影响,这些影响可能很小,也可能很高,具体取决于您的数据库使用情况、查询大小等。。