1

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 つの重要な事実:

  1. App の run メソッドで PersistService を開始します
  2. たぶん私は間違っているかもしれませんが、問題は sqlite にあるとは思いません。私がこれを言うのは、entityManager を注入しようとしなくても、アプリケーションは問題なく起動し、データベースとテーブルを作成することさえできるからです。

(さらに役に立ち、セットアップの詳細が必要な場合は、お気軽にhttps://github.com/vitallan/politicaaberta-apiでプロジェクトに問い合わせるか、アクセスしてください)

4

1 に答える 1