2016-09-25 9 views
2

Это (нижняя) ошибка из трассировки стека:бы предоставление `` EntityManagerFactory` решить Невозможно получить EntityManagerFactory для UnitName xyz`

Caused by: java.lang.IllegalStateException: Unable to retrieve EntityManagerFactory for unitName null 
at com.sun.enterprise.container.common.impl.EntityManagerWrapper.init(EntityManagerWrapper.java:138) 
at com.sun.enterprise.container.common.impl.EntityManagerWrapper._getDelegate(EntityManagerWrapper.java:171) 
at com.sun.enterprise.container.common.impl.EntityManagerWrapper.createQuery(EntityManagerWrapper.java:477) 
... 

код выглядит следующим образом (под влиянием примера @BalusC «s Я нашел на SO сегодня):

@Stateless 
public class GradService { 

    @PersistenceContext 
    private EntityManager em; 

    public List<Grad> listAll() { 
     return em.createQuery("SELECT g FROM Grad g", Grad.class).getResultList(); 
    } 
} 

в качестве сравнения, это мой persistence.xml (WebModule-корень: файлы конфигурации: WEB-INF META-INF: persistence.xml

<?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="MojaPU" transaction-type="JTA"> 
     <provider>org.hibernate.ejb.HibernatePersistence</provider> 
     <jta-data-source>jdbc/ekstraResource</jta-data-source> 
     <exclude-unlisted-classes>false</exclude-unlisted-classes> 
     <properties> 
      <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/> 
      <property name="hibernate.hbm2ddl.auto" value="update"/> 
      <property name="hibernate.show_sql" value="true"/> 
      <property name="hibernate.format_sql" value="true"/> 
     </properties> 
    </persistence-unit> 
</persistence> 
+0

Я только что прочитал, что 'context' - это фактически информация, содержащаяся в' persistence.xml', из которого создается 'Persistencemanager' (поэтому я думаю, что нет необходимости объявлять и инициировать его в самом файле. все еще нужно уточнить, что случилось с моим 'persistence.xml'? – developer10

+0

@BalusC Просто подумал, что вам может быть интересно взглянуть на это, так как это на самом деле основано на вашем примере (не уверен, что он также использовал спящий режим, но в любом случае ...) – developer10

+0

Вы пытались использовать '@PersistenceContext (unitName =" MojaPU ")'? –

ответ

1

Кажется, что вы разместили файл persistence.xml в неправильном месте. Он должен располагаться в папке/META-INF /, а не в WEB-INF.

+0

На самом деле, я ошибся при составлении сообщения. Он находится в 'META-INF 'папка действительно. – developer10