首页 > 解决方案 > 我正在尝试使用 struts 和 hibernate 建立与 sql server 的 DB 连接,但在 Listener 类中出现错误

问题描述

public void contextInitialized(ServletContextEvent arg0) {

    EntityManager em = null;
    try{

    TransactionManagerServices.getTransactionManager();
    System.out.println("In Listener");  
    emf = Persistence.createEntityManagerFactory("com.jpa");
    em = emf.createEntityManager();
    InitialContext ic = new InitialContext();
    ut = (UserTransaction) ic.lookup("java:comp/UserTransaction");

    ut.begin();
    em.joinTransaction();
    ut.commit();

    }catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        try {
            if(ut!=null) ut.rollback();
        } catch(Exception e1) {
            e1.printStackTrace();
        }
    } finally {

        if(em != null && em.isOpen()) {
            em.close();
        }
    }
}

这是错误:[PersistenceUnit: com.jpa] Unable to build EntityManagerFactory

persitence.xml 是

<!-- <?xml version="1.0" encoding="UTF-8"?> -->

http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd http://java.sun.com/xml/ns/persistence/orm http://java.sun.com/xml/ns/持久性/orm_2_0.xsd ">

    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <jta-data-source>java:comp/env/jdbc/empDS</jta-data-source>
      <class>com.jpa.Employee</class>
    <properties>      
        <property name="hibernate.dialect" value="org.hibernate.dialect.SQLServer2008Dialect"/>
        <property name="hibernate.connection.autocommit" value="false"/>
        <property name="hibernate.max_fetch_depth" value="3"/>
        <property name="hibernate.show_sql" value="false" />
        <property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.BTMTransactionManagerLookup"/>

    </properties>
</persistence-unit>

标签: hibernatehibernate-entitymanager

解决方案


推荐阅读