Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google app engine appengine后端中没有我的EntityManager的持久性提供程序_Google App Engine_Jpa_Android Studio_Persistence_Entitymanager - Fatal编程技术网

Google app engine appengine后端中没有我的EntityManager的持久性提供程序

Google app engine appengine后端中没有我的EntityManager的持久性提供程序,google-app-engine,jpa,android-studio,persistence,entitymanager,Google App Engine,Jpa,Android Studio,Persistence,Entitymanager,我使用的是Android Studio,我用Android Studio提供的工具创建了一个应用引擎后端。我正在尝试在我的android应用程序的后端模块中使用JPA/持久性。 当我尝试我的API来存储一些数据时,我得到了异常 java.lang.ExceptionInInitializerError at be.stece.esocomm.backendApp.EsoCommEndpoint.getEntityManager(EsoCommEndpoint.java:73) ....

我使用的是Android Studio,我用Android Studio提供的工具创建了一个应用引擎后端。我正在尝试在我的android应用程序的后端模块中使用JPA/持久性。 当我尝试我的API来存储一些数据时,我得到了异常

java.lang.ExceptionInInitializerError
    at be.stece.esocomm.backendApp.EsoCommEndpoint.getEntityManager(EsoCommEndpoint.java:73)
....
Caused by: javax.persistence.PersistenceException: No Persistence provider for EntityManager named esoCommBackendPersistence
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:69)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:47)
因此,问题在于我的设置或项目结构。因为它找不到我的持久性提供程序。但我不知道问题出在哪里

首先,在这个后端模块的build.gradle文件中,我有以下依赖项:

  compile 'javax.servlet:servlet-api:2.5'
  compile group: 'org.hibernate.javax.persistence', name: 'hibernate-jpa-2.0-api', version: '1.0.0.Final'
  compile 'org.hibernate:hibernate-entitymanager:4.1.7.Final'
然后在MyModule/src/META_-INF/persistence.xml中,我声明了所有内容:

<?xml version="1.0" encoding="UTF-8" ?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
  <persistence-unit name="esoCommBackendPersistence">
    <provider>org.datanucleus.api.jpa.PersistenceProviderImpl</provider>
    <properties>
      <property name="datanucleus.NontransactionalRead" value="true" />
      <property name="datanucleus.NontransactionalWrite" value="true" />
      <property name="datanucleus.ConnectionURL" value="appengine" />
      <property name="datanucleus.appengine.datastoreEnableXGTransactions"
        value="true" />
      <property name="datanucleus.appengine.autoCreateDatastoreTxns"
        value="true" />
    </properties>
    <class>be.stece.esocomm.backendApp.NewsBean</class>
  </persistence-unit>
</persistence>

好的,我让它工作了

我删除了所有的hibernate,并按照Neil Stockton的建议使用appengine持久性

dependencies {
  appengineSdk 'com.google.appengine:appengine-java-sdk:1.8.9'
  compile 'com.google.appengine:appengine-endpoints:1.8.9'
  compile 'com.google.appengine:appengine-endpoints-deps:1.8.9'
  compile 'javax.servlet:servlet-api:2.5'

    // Persistence
    compile 'org.ow2.asm:asm:4.0'
    compile 'org.datanucleus:datanucleus-api-jpa:3.1.3'
    compile 'org.datanucleus:datanucleus-api-jdo:3.1.3'
    compile 'com.google.appengine.orm:datanucleus-appengine:2.1.2'
    compile 'org.datanucleus:datanucleus-core:3.1.3'
    compile 'org.apache.geronimo.specs:geronimo-jpa_2.0_spec:1.0'
    compile 'javax.jdo:jdo-api:3.0.1'
    compile 'javax.transaction:jta:1.1'
}

现在,我还按照以下指南创建端点:

所以您在persistence.xml中定义了GAE/Datastore,但在类路径中似乎有Hibernate(为什么?)。GAE/数据存储持久性是由google的JPA插件而不是Hibernate(用于RDBMS)提供的。放置persistence.xml的位置由您决定,但在运行时它必须位于类路径根的META-INF中;您的构建机制定义了这一点
dependencies {
  appengineSdk 'com.google.appengine:appengine-java-sdk:1.8.9'
  compile 'com.google.appengine:appengine-endpoints:1.8.9'
  compile 'com.google.appengine:appengine-endpoints-deps:1.8.9'
  compile 'javax.servlet:servlet-api:2.5'

    // Persistence
    compile 'org.ow2.asm:asm:4.0'
    compile 'org.datanucleus:datanucleus-api-jpa:3.1.3'
    compile 'org.datanucleus:datanucleus-api-jdo:3.1.3'
    compile 'com.google.appengine.orm:datanucleus-appengine:2.1.2'
    compile 'org.datanucleus:datanucleus-core:3.1.3'
    compile 'org.apache.geronimo.specs:geronimo-jpa_2.0_spec:1.0'
    compile 'javax.jdo:jdo-api:3.0.1'
    compile 'javax.transaction:jta:1.1'
}