Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SparkJava应用程序中带有Guice persist的NullPointer注入EntityManager_Java_Hibernate_Guice_Entitymanager_Spark Java - Fatal编程技术网

SparkJava应用程序中带有Guice persist的NullPointer注入EntityManager

SparkJava应用程序中带有Guice persist的NullPointer注入EntityManager,java,hibernate,guice,entitymanager,spark-java,Java,Hibernate,Guice,Entitymanager,Spark Java,我在尝试在Spark+Guice应用程序中注入EntityManager时遇到问题 我的persistence.xml是: <persistence-unit name="jpa-persistence-unit" transaction-type="RESOURCE_LOCAL"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <!-- JPA entities

我在尝试在Spark+Guice应用程序中注入EntityManager时遇到问题

我的persistence.xml是:

<persistence-unit name="jpa-persistence-unit" transaction-type="RESOURCE_LOCAL">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>

    <!-- JPA entities must be registered here -->
    <...>

    <properties>
        <property name="hibernate.dialect" value="A.Special.Customized.SQLiteDialect" />
        <property name="javax.persistence.jdbc.driver" value="org.sqlite.JDBC" />
        <property name="javax.persistence.jdbc.url" value="jdbc:sqlite:local.db" />
        <property name="javax.persistence.jdbc.user" value="" />
        <property name="javax.persistence.jdbc.password" value="" />
        <property name="hibernate.show_sql" value="true" />
        <property name="format_sql" value="true" />
        <property name="hibernate.connection.charSet" value="UTF-8" />
        <property name="hibernate.hbm2ddl.auto" value="update" />
    </properties>
</persistence-unit>
我正试图以这种方式注入guice管理的对象(在DeputyService.java中)

两个重要事实:

  • 在App的run方法中,我启动了PersistService
  • 也许我错了,但我不认为问题出在sqlite上。我之所以这样说,是因为在不尝试注入entityManager的情况下,应用程序可以正常启动,甚至可以创建数据库和表

  • (如果您觉得自己特别有帮助,并且需要更多的设置细节,请随时询问或访问项目)

    我错了,Google Guice注入了一个提供者,而不是具体说的实体管理者

    因此,将注射从

    @Inject
    private EntityManager em;
    

    @Inject
    私人供应商em;
    

    解决了问题。

    我的错误是,Google Guice注入了一个提供者,而不是具体说的entityManager

    因此,将注射从

    @Inject
    private EntityManager em;
    

    @Inject
    私人供应商em;
    
    解决了这个问题

    @Inject
    private EntityManager em;
    
    @Inject
    private Provider<EntityManager> em;