Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.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 Spring JPA股票实体_Java_Spring_Hibernate_Jpa - Fatal编程技术网

Java Spring JPA股票实体

Java Spring JPA股票实体,java,spring,hibernate,jpa,Java,Spring,Hibernate,Jpa,我有一个使用SpringMVC和JPA的Web应用程序(Hibernate是我的JPA提供者)。应用程序的结构是标准/普通的Web应用程序体系结构,如控制器>服务>存储库(您可以在其中对JPA实体执行常规CRUD操作) 我有一个服务类,叫做a,它依次调用另外两个服务B和CA启动交易B和C都在一个公共实体(例如产品)和其他实体上运行 我的要求是:如果B对产品实体进行一些更改(在使用em.find获取它之后),当C调用em.find对产品(相同的ID)时,应反映B更改,而不保留对数据库的B更改。如何

我有一个使用SpringMVC和JPA的Web应用程序(Hibernate是我的JPA提供者)。应用程序的结构是标准/普通的Web应用程序体系结构,如控制器>服务>存储库(您可以在其中对JPA实体执行常规CRUD操作)

我有一个服务类,叫做
a
,它依次调用另外两个服务
B
C
<代码>A启动交易
B
C
都在一个公共实体(例如
产品
)和其他实体上运行

我的要求是:如果
B
产品
实体进行一些更改(在使用
em.find
获取它之后),当
C
调用
em.find
产品
(相同的ID)时,应反映
B
更改,而不保留对数据库的
B
更改。如何做到这一点


如果我从
B
调用
em.merge
,它会一直保存到数据库。我想要的是,
A
应该只在事务启动时提交/回滚事务。

您可以公开您的“服务”类声明吗?您如何管理这两者之间的事务?如果这都是同一事务的一部分,那么ServiceC将始终“查看”更新的实体。它是在获取过时的实体吗?您在事务内部执行SQL查询和提交事务之间感到困惑。C将看到B所做的更改,因为它们都在同一事务中运行。当Hibernate认为有必要时,对实体所做的更改(无论服务做了哪些更改)都会自动写入数据库。并且只有在提交事务时,这些更改才会永久化。如果事务回滚,它们将被取消。如果您甚至不想将更改写入数据库,那么就不要修改实体。