Я пытаюсь внедрить EntityManager в мое приложение, используя CDI, но EntityManager имеет значение null при попытке его использования.Injecting EntityManager всегда null
Вот мой код Я последовал за несколькими учебниками о том, как внедрить EntityManager, и я использую тот же код, что и в этом учебнике.
@Qualifier
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD})
public @interface DevDatabase {
}
@Singleton
public class JPAResourceProducer {
@Produces
@PersistenceContext(unitName = "DevPU")
@DevDatabase
private EntityManager em;
}
persistence.xml
<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="DevPU" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>entity.MyEntity</class>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="javax.persistence.jdbc.url" value="jdbc:postgresql://localhost:5432/MyDB"/>
<property name="javax.persistence.jdbc.user" value="appuser"/>
<property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver"/>
<property name="javax.persistence.jdbc.password" value="apppassword"/>
</properties>
</persistence-unit>
</persistence>
Это, как я использую его в своей DAO
public abstract class GenericDAO<T> {
@DevDatabase
@Inject
private EntityManager em;
private final Class<T> entityClass;
public GenericDAO(Class<T> entityClass) {
this.entityClass = entityClass;
}
public void beginTransaction() {
em.getTransaction().begin();
}
}
Бетон DAO
public class MyEntityDAO extends GenericDAO<MyEntity> {
public MyEntityDAO() {
super(MyEntity.class);
}
}
И где-то в моем коде, когда я Призыв к примеру myEntityDao.beginTransaction()
Я получаю NullPointerException
, потому что введенное значение EntityManager
равно null.
Есть ли что-нибудь, что мне не хватает в моем продюсере?
вы используете весной или J2EE? – WeMakeSoftware
Я не использую весну, я использую Tomcat в качестве контейнера, я предоставил сварку-servlet.jar – jerome
опубликовать конфигурацию сварки – WeMakeSoftware