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