javax.persistence.PersistenceException:没有名为avaliacaoneomind

时间:2016-08-08 01:01:01

标签: jpa persistence-provider

我有一个EJB项目示例,它使用@PersistenceContext来连接到我的数据库。 这工作正常,但由于我的新项目不是EJB,我必须考虑另一种方法。 所以我想出了类似的东西:

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

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

  

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

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

Bellow是我的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>

1 个答案:

答案 0 :(得分:0)

您可以通过JNDI查找实现entityManager

select t.*
from t
where t.trans_date = (select max(t2.trans_date)
                      from t t2 
                      where t2.till_id = t.till_id
                     );