【问题标题】:javax.persistence.PersistenceException: No Persistence provider for EntityManager named avaliacaoneomindjavax.persistence.PersistenceException:没有名为 avaliacaoneomind 的 EntityManager 的持久性提供程序
【发布时间】:2016-08-08 01:01:00
【问题描述】:

我有一个 EJB 项目示例,它使用 @PersistenceContext 连接到我的数据库。 这很好用,但由于我的新项目不是 EJB,我必须想办法解决这个问题。 所以我想出了这样的东西:

EntityManagerFactory entityFactory = Persistence.createEntityManagerFactory("avaliacaoneomind");
EntityManager em = entityFactory.createEntityManager();

但是当我这样做时,我得到了这个错误:

javax.persistence.PersistenceException:没有名为 avaliacaoneomind 的 EntityManager 的持久性提供程序

我知道我的 persistence.xml 是正确的并且在正确的位置,因为当我使用 @PersistenceContext(name="avaliacaoneomind") 作为测试时,我的表会在我的数据库中自动创建。如果我从代码中删除 @PersistenceContext,则不会创建表。 如何修复此错误?我尝试了所有可能找到的链接,但似乎没有一个能解决我的问题。

下面是我的persistence.xml:

<?xml version="1.0" encoding="UTF-8"?>
<persistence>
    <!--Nome do contexto que configura o Provedor de Persistência -->
    <persistence-unit name="avaliacaoneomind">
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
        <jta-data-source>jdbc/avaliacaoneomind</jta-data-source>
        <properties>
            <property name="eclipselink.ddl-generation" value="create-or-extend-tables"/>
            <property name="eclipselink.ddl-generation.output-mode" value="both" />
        </properties>      
   </persistence-unit>
</persistence>

【问题讨论】:

    标签: jpa persistence-provider


    【解决方案1】:

    可以通过JNDI查找实现entityManager

      Context initCtx = new InitialContext();
        javax.persistence.EntityManager entityManager =
                (javax.persistence.EntityManager)initCtx.lookup(
                        "java:comp/env/avaliacaoneomind"
                );
    

    【讨论】:

      猜你喜欢
      • 2015-11-08
      • 2011-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      相关资源
      最近更新 更多