2016-10-17 23 views
0

重启我有,它是通过网络使用多个用户共享同一个的MySQL数据库的应用程序。所以我们需要在数据库发生变化时使用简单的刷新可以看到更改。在我的MySQL数据库synchronisaton需要我的Java应用程序

我正在与EclipseLink(具有缓存配置为默认值)。 实际上,第二个用户(想要捕捉第一个用户所做的更改)必须重新启动应用程序(由Netbeans创建)。

UPDATE:

这里是我的的persistence.xml配置。

enter image description here

回答

2

有可能是在你的applicaltion一些高速缓存保存从数据库中检索到的previus值 - 所以要调用的SQL不会DB,但是从你的应用程序的本地缓存返回结果。根据您的持久性配置,请查看文档如何禁用缓存 - 它可能位于ORM级别。

从文件资料的EclipseLink,如何禁用缓存:

默认的EclipseLink使共享对象缓存从数据库中读取,避免反复访问数据库高速缓存中的对象。如果直接通过JDBC或其他应用程序或服务器更改数据库,则共享缓存中的对象将过时。

的EclipseLink提供了几种机制来处理陈旧的数据,包括:

Refreshing 
Invalidation 
Optimistic locking 
Cache coordination 

共享缓存也被禁用。

<property name="eclipselink.cache.shared.default" value="false"/> 

或者,JPA 2.0持久性单元元件:这可以使用的EclipseLink持久性单元属性来完成

@Entity 
@Cache(isolation=ISOLATED) 
public class Employee { 
    ... 
} 

<shared-cache-mode>NONE</shared-cache-mode> 

,或者可以使用@Cache注释被选择性地启用/禁用

或者JPA 2.0 @Cacheable注解:

@Entity 
@Cacheable(false) 
public class Employee { 
    ... 
} 

不要通过将CacheType设置为None来禁用缓存,这可能导致对象身份问题。

+0

朋友,我做了一些更新 - >我的缓存被禁用 –

+0

是其他机器上的缓存,你的朋友正在使用也将被禁用? –

+0

它是安装在两台机器上的可执行文件 –

相关问题