2017-03-14 2 views
1

右フォルダ内のpersistence.xmlが、私はまだエラーが出る私はゼロからのGradleを使用して、新しいプロジェクトを設定しています

apply plugin: 'java-library' 

repositories { 
    mavenCentral() 
} 

dependencies { 
    compile 'org.hsqldb:hsqldb:2.3.4' 
    compile 'javax.persistence:persistence-api:1.0.2' 
    compile 'org.hibernate:hibernate-core:5.2.8.Final' 
    compile 'org.hibernate:hibernate-entitymanager:5.2.8.Final' 

    api 'org.apache.commons:commons-math3:3.6.1' 

    implementation 'com.google.guava:guava:20.0' 

    testImplementation 'junit:junit:4.12' 
} 

と(src/main/resources/META-INFにある)私のpersistence.xmlに見えるのように:

<?xml version="1.0" encoding="UTF-8" ?> 
<persistence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
      http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" 
    version="2.0" xmlns="http://java.sun.com/xml/ns/persistence"> 

    <persistence-unit name="app" transaction-type="RESOURCE_LOCAL"> 
     <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> 
     <class>com.fsa.hibernate.model.User</class> 


     <properties> 
      <property name="javax.persistence.jdbc.driver" value="org.hsqldb.jdbcDriver" /> 
      <property name="javax.persistence.jdbc.url" value="jdbc:hsqldb:mem:testdb" /> 
      <property name="javax.persistence.jdbc.user" value="sa" /> 
      <property name="javax.persistence.jdbc.password" value="" /> 
      <property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect" /> 
      <property name="hibernate.hbm2ddl.auto" value="update" /> 
     </properties> 
    </persistence-unit> 

</persistence> 

は、と私は解決するのは難しい問題を取得しています:

Exception in thread "main" javax.persistence.PersistenceException: No Persistence provider for EntityManager named app: The following providers: 
org.hibernate.jpa.HibernatePersistenceProvider 
Returned null to createEntityManagerFactory. 

    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:154) 
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:83) 
    at com.fsa.hibernate.model.UserTest.main(UserTest.java:15) 

をそして、それは目のすべてのコンテンツでありますスタックトレース。

+1

は "永続-API" 1.0.2はJPA 1であるあなたのJPAプロバイダがそれを実装していない、それはJPA 2.1を実装します! –

答えて

2

私はあなたが使用しようとしていると信じて:

<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> 

が、このクラスはクラスパス上にありません。

あなたが休止状態を使用していると、に切り替えてみてください:

<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider> 
+0

あなたの答えをありがとう。しかし、私は以前これを試しました。 << javax.persistence.Persistence >>ここでいくつかのdebbuging後、私はこれが問題であることがわかりました: 行110:emf = provider.createEntityManagerFactory(persistenceUnitName、properties); この時点でnullになっています... –

+1

これは別の問題です。 @ sm4の回答はあなたが報告した問題に対して正しいです。 'javax.persistence:persistence-api'と' org.hibernate:hibernate-entitymanager'の依存関係を削除することもできます。なぜなら最初のものには 'org.hibernate:core'が付いているからです。ただコアが必要です。 – coladict

+0

@coladictありがとうございました!あなたとsm4は私の人生を大きな時間を節約しました!私の問題は今解決されました! –

関連する問題