EntityManager не вводится Guice - PullRequest
       6

EntityManager не вводится Guice

0 голосов
/ 27 августа 2018

Я обновил свой вызов createInjector, чтобы включить мой JPAPersisteModule ...

Guice.createInjector(new ApplicationModule(), new JpaPersistModule("simpleRestApplication"));

На моем сервисе мой DAO вводится без проблем ...

@Path("/users")
public class UserService {

    @Inject
    private UserDAO dao;

    public UserService() {
        Application.getInjector().injectMembers(this);
    }


}

В моем UserDAOImpl провайдер не получает инъекцию ...

@Inject
private Provider<EntityManager> em;

Это напечатано на консоли:

1) Error in custom provider, java.lang.NullPointerException while locating com.google.inject.persist.jpa.JpaPersistService while locating javax.persistence.EntityManager

На моем persistence.xml единица персистентности объявлена ​​следующим образом:

<persistence-unit name="simpleRestApplication">

    <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>

    <properties>
        <!-- Configuração do driver -->
        <property name="hibernate.dialect"
            value="org.hibernate.dialect.Oracle10gDialect" />
        <property name="hibernate.connection.driver_class"
            value="oracle.jdbc.driver.OracleDriver" />

        <!-- Configuração de conexão -->
        <property name="hibernate.connection.url"
            value="jdbc:oracle:thin:@localhost:1521/XE" />
        <property name="hibernate.connection.username"
            value="system" />
        <property name="hibernate.connection.password"
            value="myPassword123" />
        <property name="hibernate.connection.autocommit"
            value="true" />

        <!-- Configuração do hibernate -->
        <property name="hibernate.show_sql" value="true" />
        <property name="hibernate.format_sql" value="true" />
        <property name="hibernate.hbm2ddl.auto" value="update" />
        <property name="hibernate.connection.release_mode"
            value="auto" />
        <property name="current_session_context_class"
            value="thread" />
        <property name="hibernate.connection.autoReconnect"
            value="true" />

    </properties>

</persistence-unit>

1 Ответ

0 голосов
/ 28 августа 2018

На основании этой ссылки Я изменил метод configure() на ApplicationModule, чтобы установить JpaPersistenceModule и запустить PersistService ...

@Singleton
private static class JPAInitializer {
    @Inject
    public JPAInitializer(final PersistService service) {
        service.start();
    }
}

@Override
protected void configure() {

    install(new JpaPersistModule("simpleRestApplication"));
    bind(JPAInitializer.class).asEagerSingleton();

    // another bindings...

}

Теперь EntityManager вводится без ошибок ...

public class UserDAOImpl implements UserDAO {

    @Inject
    private EntityManager em;

}
...