2

私は最初のHibernateJPAプロジェクトを書いています。私には非常に一般的な問題があります(それに関する多くの記事を見つけました)が、解決策はありません。

アプリケーションを実行すると、次のエラーが発生します。

Exception in thread "main" javax.persistence.PersistenceException: No Persistence provider for EntityManager named JpaTest2
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:69)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:47)
at net.andy.DatabaseAccess.testJpa(DatabaseAccess.java:55)
at net.andy.Main.main(Main.java:11)

私のpersistence.xmlは次のとおりです。

<persistence-unit name="pu3" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>net.andy.Writer</class>
  <properties>
     <property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
     <!--  <property name="hibernate.connection.driver_class" value="org.hsqldb.jdbcDriver"/> -->
     <property name="hibernate.connection.driver_class" value="org.postgresql.Driver"/>
     <property name="hibernate.connection.username" value="postgres"/>
     <property name="hibernate.connection.password" value="postgres"/>
     <property name="hibernate.connection.url" value="jdbc:postgresql://localhost:5432/testdb"/>
     <property name="hibernate.max_fetch_depth" value="3"/>
  </properties>

そして、これは私がdbに何かを保存しようとする私のクラスです:

    public static void testJpa() {

    // Use persistence.xml configuration

    EntityManagerFactory emf = Persistence.createEntityManagerFactory("JpaTest2");
    EntityManager em = emf.createEntityManager();

    // Work with the EM
    Writer w = new Writer();
    //MapEntity map = new MapEntity();
    w.setId(5);

    EntityTransaction transaction = em.getTransaction();
    transaction.begin();
    em.persist(w);
    transaction.commit();
    em.close();
    emf.close(); 
}

私はこのエラーを説明する多くの記事を読みました。これまでのところ:

  1. persistence.xmlに行を追加しました。
  2. 変更されたpersistence.xmlの場所(おそらくすべての場所をmeta-infフォルダー、myproject / srcなども試しました)
  3. libs hibernate-core、hibernate-entitymanager、hibernate-commons-annotations、ejb3-persistence、hibernate-jpa、jta、postgresqljdbc(およびその他いくつか)を追加しました。

これを解決する方法は?上記のほとんどのコードはチュートリアルからコピーされているため、ライブラリまたはプロジェクト構造にいくつかの問題があると思いますが、この問題の正しい理由を見つけることができません。

4

2 に答える 2

0

あなたのpersistence.xmlの永続性ユニットの名前はですがpu3、あなたが使用するEntityManagerFactoryを構築するときのあなたのコードではJpaTest2。最初にそれを修正してみてください(同じ名前を使用してください)。

于 2012-11-15T10:44:00.470 に答える
0

dependenciesで構成する必要がある場合がありますpom.xmlここで:構成をセットアップします。

pom.xml

<project ...>
  ...
  <dependencies>
    <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-entitymanager</artifactId>
      <version>${hibernate-core-version}</version>
    </dependency>
  </dependencies>
</project>
于 2012-11-15T11:17:11.913 に答える