如何修复身份始终返回 0 的 HSQL DataSource + TxM
Posted
技术标签:
【中文标题】如何修复身份始终返回 0 的 HSQL DataSource + TxM【英文标题】:How to fix HSQL DataSource + TxM where identity always return 0 【发布时间】:2011-02-01 00:32:40 【问题描述】:我正在使用 Hibernate 使用 HSQL 进行 ORM 测试以进行测试。似乎获取了一个连接来执行插入然后返回。紧接着 HIbernate 获得一个连接,然后尝试从 HSQL 获取标识,但返回 0,这显然是错误的。
当我使用普通池连接运行不带 tm 和数据源时,一切正常,但使用新的 tm + ds 我遇到了这个问题。
【问题讨论】:
您确定要在持久性上下文刷新到数据库后查询身份吗?在此之前,Hibernate 不保证对生成器的访问,这通常发生在您关闭事务或关闭会话时。另外,您使用的是什么身份生成器策略? 【参考方案1】:答案是 DataSource 应该是 tx 感知的,因此每个新 tx 的连接都是粘性的。最初的问题是使用不同的连接来获取新行的标识,这当然会导致返回 0。如果初始插入和调用标识的连接保持粘性,则一切正常。
【讨论】:
嘿,mP,你能详细说明你的答案吗?我有一个类似的问题,我尝试了不同的解决方案,以利用。如何让 DataSource tx 感知?以上是关于如何修复身份始终返回 0 的 HSQL DataSource + TxM的主要内容,如果未能解决你的问题,请参考以下文章
Laravel Passport身份验证问题:始终返回未经身份验证的身份