Hibernate EntityManager + JOTM:不使用交易

发布于 2024-08-03 01:11:22 字数 722 浏览 13 评论 0原文

我正在尝试将 JOTM 和 Hibernate EntityManager 集成在一起,以在事务方式环境中但在容器外测试我的 EJB。

我的测试如下所示:

  1. 启动 JOTM
  2. 将 JOTM 的 UserTransaction 放入 JNDI
  3. 创建并配置 StandardXADataSource
  4. 将数据源放入 JNDI
  5. 配置休眠并创建 EMF
  6. 创建 EM
  7. 开始事务
  8. 在 EM 中加入事务
  9. 存储实体
  10. 验证已存储
  11. 回滚事务
  12. 检查记录计数的数据库
  13. 撕毁所有内容

这是我的代码的样子: http://pastebin.com/m22a9f6b

这是日志输出: http://pastebin.com/m6da9383a

测试在步骤 12(第 121 行)失败。

正如你所看到的,即使我已经回滚了事务,数据库中还是有一条记录。似乎根本没有使用事务并且记录已进入数据库。

您知道这种情况是如何发生的以及如何解决吗?

I am trying to integrate together JOTM and Hibernate EntityManager to test my EJBs in a transactional manner environment but out-of-container.

My test looks like the following:

  1. Start JOTM
  2. Put JOTM's UserTransaction into JNDI
  3. Create and configure StandardXADataSource
  4. Put the DataSource into JNDI
  5. Configure hibernate and create EMF
  6. Create an EM
  7. Begin a transaction
  8. Join the transaction in EM
  9. Store an entity
  10. Verify it is stored
  11. Rollback the transaction
  12. Check the database for the count of records
  13. Tear everything down

Here is what my code looks like:
http://pastebin.com/m22a9f6b

Here is the logging output:
http://pastebin.com/m6da9383a

The test fails on step 12 (line 121).

As you can see, even though I have roll-backed the transaction, there is a record in the DB. Seems like transactions where not used at all and the record got through into the db.

Do you have any ideas how this could be happening and how to fix it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

呆萌少年 2024-08-10 01:11:22

我发现我需要提供自己的 ConnectionProvider 实现,它将返回 XAConnection 而不是简单的连接。这样交易似乎就可以进行

I figured out I need to provide my own implementation of ConnectionProvider that would return XAConnection instead of simple connections. This way transactions seem to work

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文