Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java EJB容器如何处理类型为JTA的JPA_Java_Jakarta Ee_Jpa_Jboss - Fatal编程技术网

Java EJB容器如何处理类型为JTA的JPA

Java EJB容器如何处理类型为JTA的JPA,java,jakarta-ee,jpa,jboss,Java,Jakarta Ee,Jpa,Jboss,我在jpa JTA事务类型中使用了jboss和hibernate 4。在DAOUtil类中,我尝试获取实体管理器,我可以获取它并执行查询。但是当我刷新实体管理器时,错误发生了 Caused by: javax.persistence.TransactionRequiredException: no transaction is in progress at org.hibernate.ejb.AbstractEntityManagerImpl.flush(AbstractEntityMa

我在jpa JTA事务类型中使用了jboss和hibernate 4。在DAOUtil类中,我尝试获取实体管理器,我可以获取它并执行查询。但是当我刷新实体管理器时,错误发生了

Caused by: javax.persistence.TransactionRequiredException: no transaction is in progress
    at org.hibernate.ejb.AbstractEntityManagerImpl.flush(AbstractEntityManagerImpl.java:970)
    at com.vms.dao.hibernate.HibernateDAOSession.flush(HibernateDAOSession.java:288)
我在互联网上搜索过,他们说:如果我们使用带有jta事务类型的jpa,我们必须将EntityManager注入ejb,对吗? 如果这是正确的,我有一个问题:实体管理器的线程池如何?我把那件事弄糊涂了

请任何人给我一个真实的方法,在JTA事务类型中使用jpa

补充说

我认为这是一个问题,因为我有一个获取EJB外部EntityManager的工具

还有一个问题,在使用JTA事务类型的JPA中,我认为我们不能使用本机sql进行更新。在ejb中,我有以下代码

public int executeNativeUpdate(String query, Map<String, Object> params) {
    Query q = em.createNativeQuery(query);
    setParameters(q, params);
    return q.executeUpdate();
}

任何人都可以解释。我是JPA和JTA的初学者。如果我将JPA与JTA事务类型一起使用,并将EntityManager注入无状态EJB,EJB容器将为我处理事务,对吗?我不需要开始/提交事务。本地sql呢?EJB容器可以处理所有事务吗?

如果使用JTA事务类型,则容器管理事务应用程序服务器、openjpa或其他。在这种情况下,您应该使用EJB,其中每个方法调用都封装在事务中。创建、提交、回滚、管理实体管理器-容器的工作。

显示HibernateDAOSession和DAOUtil代码
Caused by: javax.persistence.TransactionRequiredException: Executing an update/delete query