当前位置: 首页 > 知识库问答 >
问题:

不使用事务、传播支持和OpenEntityManager模式的不一致JPA行为

谢叶五
2023-03-14

我们知道完全没有事务同步和支持同步是有区别的。但是JPA的行为似乎不一致:

  • 如果没有活动的事务同步,那么当试图使用JPA持久化某些内容时,我们将从SpringsSharedEntityManagerCreator获得TransactionRequiredException.
  • 如果只有一个支持事务同步活动,我们不会得到这个异常,并且持久化请求被静默地忽略。然而,这正是在SharedEntityManagerCreator创建上述异常时要避免的情况。
  • 如果存在活动的“OpenEntityManager”模式,也不会出现异常,并且Persistent请求也会被静默地忽略。

在我看来,这些情况之间没有真正的区别,我希望在所有情况下都看到这种例外,还是没有?

谢谢!

更新2015年7月:我现在将此问题提交给Spring https://jira.Spring.io/browse/spr-13243

共有1个答案

夏侯瑞
2023-03-14

参见:

http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/orm/hibernate3/support/opensessioninviewfilter.html

(OpenEntityManagerInViewFilter应该以同样的方式工作)

 类似资料:
  • 我们继续上一章节的内容,大家应该记得我们 Lua 代码中是如何完成 ngx_postgres 模块调用的。我们把他简单改造一下,让他更接近真实代码。 local json = require "cjson" function db_exec(sql_str) local res = ngx.location.capture('/postgres',

  • 问题内容: JTA为什么不支持嵌套事务?是因为实现它们的复杂性(我对此表示怀疑)还是某些设计原则? 问题答案: (正如@Piotr Nowicki指出的那样,JTA 确实 允许嵌套事务,但这不是强制性的可选操作。) 为什么?这是无法确定地回答的问题之一,除非您是做出决定时“在房间里”的人之一。 将嵌套事务作为规范的一部分包括在内可能是固有的复杂性。或当时明显的复杂性;即他们不知道他们知道如何做一个

  • 我将spring应用程序连接到smartbaer servicev,在那里创建了虚拟数据源(Postgres)。 驱动程序类: 连接字符串(本地servicev虚拟服务器url): 应用程序.属性:- spring.datasource.driver-class-name=com.smartbear.servicev.jdbc.driver.jdbcvirtdriver spring.dataso

  • 我正在开发连接到Azure ServiceBus的Java JMS应用程序。一旦我发现JMS被支持,我就没有料到会有任何问题。但是,当我开始创建连接并添加Spring时,我得到了一个错误,它说我的Azure订阅是“基本”层,因此不支持事务。我所做的是升级到“标准”层,错误得到了解决。这里涵盖了这个。 然而,在测试过程中,我不确定它是否按预期工作,我正在测试行为,同时我被另一个MS文档弄糊涂了,该文

  • 有人能帮助我如何通过datastax.cassandraconnector设置一致性吗?