2015-12-07 2 views
1

У меня возникли проблемы с попыткой внедрить EntityManager в приложение Spark + Guice.NullPointer инъекции EntityManager с Guice-persist в приложении SparkJava

Мой 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> 

Мой главный метод идет (в App.java)

public static void main(String[] args) { 
    Injector injector = Guice.createInjector(new JpaPersistModule("jpa-persistence-unit")); 
    injector.getInstance(App.class).run(); 
} 

И я пытаюсь придать таким образом, в объекте под управлением Guice (в DeputyService.java)

@Inject 
private EntityManager em; 

Два важных факта:

  1. В способе запуска приложения я запускаю PersistService
  2. Возможно, я ошибаюсь, но я не думаю, что проблема связана с sqlite. Я говорю это, потому что, не пытаясь внедрить entityManager, приложение загружается в порядке и даже создает базу данных и таблицы.

(если вы чувствуете дополнительную полезно и нужно больше информации о настройках, не стесняйтесь спросить или достичь проект в https://github.com/vitallan/politicaaberta-api)

ответ

0

Моя ошибка, Google Guice впрыскивает поставщика, а не EntityManager конкретно говорить ,

Таким образом, изменяя инъекции от

@Inject 
private EntityManager em; 

в

@Inject 
private Provider<EntityManager> em; 

решить эту проблему.

Смежные вопросы