簡體   English   中英

實體管理器不會被Guice注入

[英]EntityManager don't being injected by Guice

我更新了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聲明如下:

<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>

基於此鏈接,我更改了ApplicationModule上的configure()方法以安裝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;

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM