首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JPA中的JTA事务

JPA中的JTA事务
EN

Stack Overflow用户
提问于 2011-02-21 05:30:54
回答 2查看 4.3K关注 0票数 0

我的currect项目包括Hibernate平台上的JPA2.0、HSQLDB2.0和JBoss5.1。

我还在JBoss中以hmc的名称定义了数据源。

Persistence.xml看起来像:<persistence-unit name=HMC><jta-data-source>java:/hmc</jta-data-source>...</persistence-unit>

有人能让我知道吗

  1. JPA persistence.xml中jta和非jta数据源定义的区别是什么?
  2. 如何获得连接,在JTA模式下启动事务?

我对如何启动事务来持久化实体感到有点困惑。

每当运行select查询时,EntityManager都能工作,但不适用于持久化数据。

我试过了

  1. 对于EntityManager,它抛出了IllegalStateException : A JTA EntityManager cannot use getTransaction()异常。
  2. 通过查找数据源并能够获得连接对象,但无法从该javax.sql.Connection对象启动事务。
  3. 使用@Inject,@ EJBContext、EntityManager和UserTransaction的资源。

致以敬意,

萨蒂亚

EN

回答 2

Stack Overflow用户

发布于 2011-03-22 17:33:10

对于JTA和非JTA之间的差异,可以参考这篇文章

有关如何在JTA模式下访问JDBC连接,可以参考这篇文章

对于EntityManager,它抛出了IllegalStateException : JTA EntityManager不能使用getTransaction()异常。

我认为发生此错误是因为容器是管理您的事务的容器,而不是您(否则它将是一个非jta,您将使用应用程序管理的实体管理器)。

您不能访问事务的原因是您可以调用提交或其他应该由Java容器执行的方法。

通过查找数据源并能够获得连接对象,但无法从该javax.sql.Connection对象启动事务。

我认为这已经很好了,因为您已经可以从数据源获得连接,这是一种干净的方法。我不认为您需要担心这里的事务,因为它已经由您正在使用的Java容器管理。那么,为什么不直接用连接来做这些事情呢?:-)

票数 2
EN

Stack Overflow用户

发布于 2012-06-18 23:08:51

嗯..。那批处理呢。我们很有限!

http://docs.jboss.org/hibernate/orm/4.0/hem/en-US/html/batch.html

我需要会议,我需要交易。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5062671

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档