使用@PersistenceContext批注,在DAO中,transaction-type =“ JTA”的EntityManager为null

时间:2019-12-03 15:31:46

标签: java jpa tomcat7 jta

我的persistence.xml文件如下所示。我将此文件保存在src / main / resources / META-INF /下。

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1"
    xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema- 
instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
<persistence-unit name="JSFEntityManager" transaction-type="JTA">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>      
    <class>com.nsm.bma.model</class>
    <!-- Configuring JDBC Connection -->
    <properties>
        <property name="javax.persistence.jdbc.driver" value="******" />
        <property name="javax.persistence.jdbc.url" value="*********" />
        <property name="javax.persistence.jdbc.user" value="*******" />
        <property name="javax.persistence.jdbc.password" value="******" />
        <property name="hibernate.dialect" value="org.hibernate.dialect.SQLServerDialect" />
        <property name="hibernate.allow_update_outside_transaction" value="true" />
    </properties>
</persistence-unit>

我的刀模如下所示: 公共类UserDaoImpl实现UserDao {

@PersistenceContext(unitName = "JSFEntityManager")
private EntityManager entityManager;

@SuppressWarnings("unchecked")
public List<User> getUsers() {
    Query query = entityManager.createQuery("FROM User");

    return query.getResultList();
}

使用下面的语句可处理Resource_Local事务类型。但我想使用“ JTA”

EntityManager entityMgrObj = Persistence.createEntityManagerFactory(JSFEntityManager).createEntityManager();

我正在使用Apache Tomcat v7.0服务器。我相信persistence.xml不会被读取(如果我删除persistence.xml,它不会报错并且控制台中没有错误,只是objectManager为null)。

请帮助我在这里做错了什么。 Tomcat 7.0与JTA不兼容吗?

0 个答案:

没有答案