Entitismanager не вводил
-
01-10-2019 - |
Вопрос
Я получаю НПУ для моего Entitymanager и не могу понять, почему - может кто-нибудь заметить мою ошибку?
USERMANAGERIMPL.java
@Stateless
public class UserManagerImpl implements UserManager {
@PersistenceContext(unitName = "persistenceUnit")
EntityManager em;
public List<User> findUsers() {
return (List<User>) em.createQuery("from User").getResultList();
}
}
Meta-inf / papsistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0">
<persistence-unit name="persistenceUnit">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>java:/DefaultDS</jta-data-source>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
<property name="hibernate.hbm2ddl.auto" value="create" />
</properties>
</persistence-unit>
</persistence>
Они находятся внутри моего проекта JAJ EJB, у USERMANAGERPLIMPL используются из JSP, не уверены, что это должно иметь значение, хотя.
Заранее спасибо.
Решение
Когда вы используете new UserManagerImpl()
Контейнер не имеет возможности ввести EntityManager
в этот класс. Вам необходимо позволить контейнеру ввести экземпляр в ваш объект, используя
@EJB
private UserManager userManager;
Это будет работать только для управленческих объектов контейнера, такими как JSF управляемые бобы, сервлеты или JSP. В качестве альтернативы вы можете посмотреть EJB от JNDI, используя что-то вроде
new InitialContext().lookup("UserManagerImpl");
Фактическое имя JNDI может быть разным.
Не связан с StackOverflow