【问题标题】:How to fix HSQL DataSource + TxM where identity always return 0如何修复身份始终返回 0 的 HSQL DataSource + TxM
【发布时间】:2011-02-01 00:32:40
【问题描述】:

我正在使用 Hibernate 使用 HSQL 进行 ORM 测试以进行测试。似乎获取了一个连接来执行插入然后返回。紧接着 HIbernate 获得一个连接,然后尝试从 HSQL 获取标识,但返回 0,这显然是错误的。

当我使用普通池连接运行不带 tm 和数据源时,一切正常,但使用新的 tm + ds 我遇到了这个问题。

【问题讨论】:

  • 您确定要在持久性上下文刷新到数据库后查询身份吗?在此之前,Hibernate 不保证对生成器的访问,这通常发生在您关闭事务或关闭会话时。另外,您使用的是什么身份生成器策略?

标签: java hibernate transactions hsqldb jta


【解决方案1】:

答案是 DataSource 应该是 tx 感知的,因此每个新 tx 的连接都是粘性的。最初的问题是使用不同的连接来获取新行的标识,这当然会导致返回 0。如果初始插入和调用标识的连接保持粘性,则一切正常。

【讨论】:

  • 嘿,mP,你能详细说明你的答案吗?我有一个类似的问题,我尝试了不同的解决方案,以利用。如何让 DataSource tx 感知?
猜你喜欢
  • 1970-01-01
  • 2021-08-03
  • 2012-03-09
  • 1970-01-01
  • 2022-12-06
  • 1970-01-01
  • 2018-12-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多