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>
私の主な方法は(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;
2 つの重要な事実:
- App の run メソッドで PersistService を開始します
- たぶん私は間違っているかもしれませんが、問題は sqlite にあるとは思いません。私がこれを言うのは、entityManager を注入しようとしなくても、アプリケーションは問題なく起動し、データベースとテーブルを作成することさえできるからです。
(さらに役に立ち、セットアップの詳細が必要な場合は、お気軽にhttps://github.com/vitallan/politicaaberta-apiでプロジェクトに問い合わせるか、アクセスしてください)