Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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
Java OpenJPA实体类如何始终与db同步_Java_Jpa_Synchronization_Openjpa_Entitymanager - Fatal编程技术网

Java OpenJPA实体类如何始终与db同步

Java OpenJPA实体类如何始终与db同步,java,jpa,synchronization,openjpa,entitymanager,Java,Jpa,Synchronization,Openjpa,Entitymanager,在使用OpenJPA时,如果我用annotation@Entity标记一个类,是否有方法指定(通过annotation)始终保持该实体与底层db同步 目标是始终访问最新修改的数据。我知道在实体类之外,我们可以执行EntityManager.refresh,这将刷新对象以从数据库加载最新数据。但是,在创建实体本身时,是否有一种方法可以指定它。因此,未来的开发人员只需查看实体类,就可以知道它将始终拥有最新的数据。他不需要扫描整个代码库来查看EntityManager.refresh的调用位置。我认为

在使用OpenJPA时,如果我用annotation@Entity标记一个类,是否有方法指定(通过annotation)始终保持该实体与底层db同步


目标是始终访问最新修改的数据。我知道在实体类之外,我们可以执行
EntityManager.refresh
,这将刷新对象以从数据库加载最新数据。但是,在创建实体本身时,是否有一种方法可以指定它。因此,未来的开发人员只需查看实体类,就可以知道它将始终拥有最新的数据。他不需要扫描整个代码库来查看EntityManager.refresh的调用位置。

我认为您正在处理的问题是对同一实体的并发修改。JPA并不是为了解决这个问题而设计的。在JPA应用程序中处理并发访问的更合适的形式是锁定

您也没有提到事务隔离。您提到的行为在很大程度上取决于数据的可访问性,而数据是在事务启动后修改的。这在所有事务隔离级别中都是不可能的


您应该将您的需求更多地与系统时钟之类的东西进行比较。在调用方法时,您总是希望访问最新日期
now
。因此,您应该有一个可以返回该对象的服务。您还应该通过该服务为该对象编写更新。因此,该服务可以完全控制当前最新的对象。

我已重新标记了您的问题,因此可能会引起更多关注。