2011-06-12 45 views
0

我有两个应用程序共享数据库 问题是,当从一个应用程序更新记录,并从另一个应用程序HQL查询后它dosenot得到新的更新,是通过缓存?
hql dosenot查看更新

的技术,我们使用
缝不同,Vaadin,JPA /休眠

<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: 从用户

回答

0

是存储与@事务或什么是注释数据的方法Seam等价物(或者如果您正在使用程序化交易,您是否正在创建和提交交易)?我似乎记得,将数据存储到没有@Transactional(使用Spring)的数据库的方法不会导致异常或其他错误,但不会简单地将数据提交到数据库中。同时刷新事务/数据库会话可能会有所帮助。

+0

数据已被提交。问题在其他应用程序更新后回想查询 – aatsy 2011-06-12 12:35:03

+0

如果在查询之前使用“原始”Hibernate会话来强制第一级缓存到达,您可以尝试entityManager.clear()(如果使用JPA EntityManager)或session.clear()被清除。如果内存服务,JPA EntityManager和Hibernates的会话对象都应该有刷新(obj)方法,这会强制从数据库一路刷新,绕过第一级和第二级缓存。不使用缓存时,您可能会看到一些性能问题(可能非常小或非常高,具体取决于您的数据库使用情况,查询大小等)。 – esaj 2011-06-12 12:49:02