0

我有使用 JPA 的简单 Maven EJB 模块。这是我的 persistence.xml 文件

<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
    <persistence-unit name="Persistence">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <mapping-file>GroupTypes.xml</mapping-file> 
        <properties>
            <property name="hibernate.connection.url"  value="jdbc:oracle:thin:@127.0.0.1:1521:E"/>
            <property name="hibernate.connection.driver_class" value="oracle.jdbc.driver.OracleDriver"/>
            <property name="hibernate.connection.username" value="username"/>
            <property name="hibernate.connection.password" value="password"/>
        </properties>
    </persistence-unit>
</persistence>

我正在使用 EJB 无状态 Bean,并且正在尝试从 GroupTypes 表中获取所有属性。这是我的 bean 实现:

public class TestBean
{

    private GroupTypes GroupTypes;
    private EntityManagerFactory entityManagerFactory;
    private EntityManager entityManager;

   @WebMethod (operationName = "justTesting")
   public boolean justTesting(@WebParam (name = "param") String value)
   {
       try
       {
            entityManagerFactory = Persistence.createEntityManagerFactory("Persistance");
            entityManager = entityManagerFactory.createEntityManager();
            Query query = entityManager.createQuery("Select name from GroupTypes");
            List<AmmEdGroupTypes> result = query.getResultList();
            return true;

        }
        catch(Exception e)
       {
            e.printStackTrace();
            return false;
       }
    }
}

当我尝试调用此方法时,出现异常:javax.persistence.PersistenceException: No Persistence provider for EntityManager named Persistance。我的persistance.xml 文件放在文件夹resources/META-INF/persistance.xml 中,如果我不使用bean,则此解决方案有效。有人知道为什么只有在我使用bean时才会发生这种情况吗?

我正在使用 Intellij 12.1.1、Oracle 11g、Glassfish 3.1 服务器和 JAVA 1.6。

4

1 回答 1

0

我通过以下方式解决了这个问题:

  1. 在 glassfish 上安装 hibernate 插件(使用 glassfish 更新工具)
  2. _AmmPool在 glassfish 上添加了带有属性的jdb 连接池:className, username,password,databaseName and url
  3. jdbc/__amm在 glassfish 上添加了与连接池的jdbc 资源绑定_AmmPool
  4. 更改persistence.xml文件
  5. 更改pom.xml文件
  6. 将以下库复制到 glassfish 域/domain1/lib 文件夹中:

    • antlr-2.7.7
    • commons-collections-3.2.1,
    • dom4j-1.6.1,
    • ejb3-persistence-1.0.2.GA,
    • hibernate3-maven-plugin-3.0,
    • hibernate-commons-annotations-4.0.2.Final,
    • hibernate-core-4.2.2.Final,
    • hibernate-entitymanager-4.2.2.Final,
    • javassist-3.15.0-GA,
    • jta-1.1,
    • log4j-1.2.17,
    • oracle-jdbc-11.1.0.6.0-Production+,
    • slf4j-api-1.6.1
    • slf4j-log4j12-1.7.5

A 还将这些库复制到 glassfish/lib floder 中。

这是我的新persistance.xml 文件: http: //pastebin.com/xbEU9Tr0

这是我的 pom.xml 文件: http: //pastebin.com/uEjhW36

于 2013-06-27T12:20:20.483 回答