Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySql数据库中的同步需要重新启动Java应用程序_Java_Mysql_Jpa_Eclipselink - Fatal编程技术网

MySql数据库中的同步需要重新启动Java应用程序

MySql数据库中的同步需要重新启动Java应用程序,java,mysql,jpa,eclipselink,Java,Mysql,Jpa,Eclipselink,我有一个应用程序,它由多个用户通过网络共享同一MySQL数据库使用。因此,我们需要当一个对数据库进行更改时,另一个通过简单的刷新可以看到更改 我正在使用EclipseLink(缓存配置为默认设置)。 实际上,第二个用户(想要捕获第一个用户所做的更改)必须重新启动应用程序(由Netbeans创建) 更新: 下面是my persistence.xml中的配置 应用程序中可能有一些缓存保存从DB检索到的previus值,因此您调用的sql不会进入DB,而是从应用程序的本地缓存返回结果。根据您的持久性配

我有一个应用程序,它由多个用户通过网络共享同一MySQL数据库使用。因此,我们需要当一个对数据库进行更改时,另一个通过简单的刷新可以看到更改

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

更新:

下面是my persistence.xml中的配置


应用程序中可能有一些缓存保存从DB检索到的previus值,因此您调用的sql不会进入DB,而是从应用程序的本地缓存返回结果。根据您的持久性配置,查看如何禁用缓存的文档-它可能在ORM级别

从EclipseLink文档中,如何禁用缓存:

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

EclipseLink提供了几种处理过时数据的机制,包括:

Refreshing
Invalidation
Optimistic locking
Cache coordination
还可以禁用共享缓存。这可以使用EclipseLink持久性单元属性完成:

<property name="eclipselink.cache.shared.default" value="false"/>
或JPA 2.0@Cacheable注释:

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

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

您的应用程序中可能有一些缓存保存从DB检索到的previus值,因此您调用的sql不会进入DB,而是从应用程序的本地缓存返回结果。根据您的持久性配置,查看如何禁用缓存的文档-它可能在ORM级别

从EclipseLink文档中,如何禁用缓存:

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

EclipseLink提供了几种处理过时数据的机制,包括:

Refreshing
Invalidation
Optimistic locking
Cache coordination
还可以禁用共享缓存。这可以使用EclipseLink持久性单元属性完成:

<property name="eclipselink.cache.shared.default" value="false"/>
或JPA 2.0@Cacheable注释:

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

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

您朋友正在使用的另一台计算机上的缓存是否也被禁用?它是安装在两台计算机上的可执行文件?您朋友正在使用的另一台计算机上的缓存是否也被禁用?它是安装在两台计算机上的可执行文件