java - 是什么导致了这个 "No Persistence provider for EntityManager named ___"异常?

标签 java xml google-app-engine jpa gradle

我已经尝试解决这个问题几天了,但我尝试过的许多方法都不起作用!

javax.persistence.PersistenceException: No Persistence provider for EntityManager named user

关于 persistence.xml 的确切位置,我看到了相互矛盾的报告 - 下面的任何一个位置都是正确的吗?

显然,此错误的原因可能是我将 persistence.xml 放在了错误的位置(我不认为我这样做),持久性提供程序 jar 不在类路径中(我认为是),或者我的依赖关系不正确(我猜是这样,但不知道是什么!)

Location of my persistnece.xml persistence.xml 的内容:

<?xml version="1.0" encoding="UTF-8"?>

<persistence xmlns="http://java.sun.com/xml/ns/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_1_0.xsd" version="1.0">

<persistence-unit name="user">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>

    <class>main.java.Account.User</class>

    <properties>
        <property name="javax.persistence.jdbc.user" value="root" />
        <property name="hibernate.show_sql" value="true" />
        <property name="hibernate.hbm2ddl.auto" value="update" />
        <property name="javax.persistence.jdbc.url" value="jdbc:google:mysql://grade-me:datastore/grademe?user=root"/>
        <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5"/>
    </properties>

</persistence-unit>

对构建文件进行评分:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.google.appengine:gradle-appengine-plugin:1.9.14'
    }
}

repositories {
    jcenter();
}

apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'appengine'

sourceCompatibility = JavaVersion.VERSION_1_7
targetCompatibility = JavaVersion.VERSION_1_7

dependencies {
    appengineSdk 'com.google.appengine:appengine-java-sdk:1.9.14'

    compile fileTree(dir: 'libs', include: ['*.jar'])

    compile 'com.google.appengine:appengine-endpoints:1.9.14'
    compile 'com.google.appengine:appengine-endpoints-deps:1.9.14'
    compile 'javax.servlet:servlet-api:2.5'
    compile 'org.hibernate:hibernate-core:4.3.8.Final'
}

appengine {
    downloadSdk = true
    appcfg {
        oauth2 = true
    }
    endpoints {
        getClientLibsOnBuild = true
        getDiscoveryDocsOnBuild = true
    }
}

如果有任何帮助,我将非常感激(如果这是愚蠢的事情,请对我宽容一点!)谢谢

编辑:我只是想向任何遇到这个问题的人更新,不幸的是我没有设法使用这些建议中的任何一个让 hibernate 工作,而是选择使用 Objectify。

最佳答案

尝试将 hibernate-entitymanager 更改为类似于 hibernate-core 的编译依赖项。这可能是 fileTree 依赖项的问题。

关于java - 是什么导致了这个 "No Persistence provider for EntityManager named ___"异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29417702/

相关文章:

java - FFmpeg 链接器错误 : Error due to text relocations in libavcodec shared object

android - 在xml中设置 map fragment 参数

google-app-engine - 一个 Google App Engine Python 实例可以处理多少个并行请求?

java - 如何使用 Struts 2 gzip ajax 请求?

java - 如何使用 api 获取数据,我正在使用 api.weathermap.org ;但我只能获取一些数据

xml - 使用 vbscript 创建 XML 元素时如何避免 xmlns 属性?

Django:避免将常见的 url 参数传递给每个 View

google-app-engine - 在 python 中的 Appengine 上进行通配符搜索

java - MongoDB 更新嵌套数组的元素

xml - @Scope ( INTERFACES ) 相当于 XML