相关疑难解决方法(0)

JTA EntityManager无法使用getTransaction()

如何在我的非ejb应用程序中使用以下代码.代码有效.

@Override
public void saveItems(Collection<T> items) {
    synchronized (em) {
        EntityTransaction tx = em.getTransaction();
        try {
            tx.begin();
            for (T item : items) {
                saveItem_((Class<T>) null, item);
            }
            tx.commit();
        } finally {
            if (tx.isActive()) {
                tx.rollback();
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在一个新的应用程序中,我正在使用EJB3 + JSF,并希望重用包含上述代码的库.我对新应用程序的持久性单元如下所示:

  <persistence-unit name="myApp" transaction-type="JTA">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <jta-data-source>MySQLConnection</jta-data-source>
  </persistence-unit>
Run Code Online (Sandbox Code Playgroud)

我的新应用程序在遇到此行时抛出异常:

    EntityTransaction tx = em.getTransaction();
Run Code Online (Sandbox Code Playgroud)

例外是:

A JTA EntityManager cannot use getTransaction()
Run Code Online (Sandbox Code Playgroud)

这很清楚.问题是如何转换我的代码以使容器管理的事务.大概我的bean方法需要适当注释......问题是如何?

java persistence ejb-3.0

21
推荐指数
2
解决办法
4万
查看次数

JTA EntityManager不能使用getTransaction()[Spring + Hibernate + EntityManager]

我正在使用Spring + JPA + Hibernate + EntityManager与数据库进行通信.我得到'A JTA EntityManager无法使用getTransaction() '错误.请提供您的见解并帮助我解决问题.

beans.xml中

<?xml version="1.0" encoding="UTF-8"?>
<beans default-autowire="byName"
    ... xmlns definitions...
      xsi:schemaLocation="...">

    <context:component-scan base-package="com.mycompany.myproject" />

    <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" />
    <bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />

    <bean id="myDAO" class="com.mycompany.myproject.dao.myDAO" />

    <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="entityManagerFactory" ref="entityManagerFactory" />
    </bean>

    <tx:annotation-driven />
</beans>
Run Code Online (Sandbox Code Playgroud)

persistence.xml中

<?xml version="1.0" encoding="UTF-8"?>
<persistence ... xmlns definitions xsi:schemaLocation="..." version="1.0">
    <persistence-unit name="TEST_DS">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <jta-data-source>java:/TEST_DS</jta-data-source>
        <class>com.twinspires.exchange.model.Test</class>
        <properties>
            <property name="hibernate.archive.autodetection" value="class, hbm" />
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
            <property name="hibernate.hbm2ddl.auto" value="validate" /> <!-- create-drop update -->
            <property …
Run Code Online (Sandbox Code Playgroud)

spring hibernate jpa entitymanager

2
推荐指数
1
解决办法
1万
查看次数

标签 统计

ejb-3.0 ×1

entitymanager ×1

hibernate ×1

java ×1

jpa ×1

persistence ×1

spring ×1