2016-10-17 53 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

它是安裝在兩臺機器上的可執行文件 –

相關問題