是什么导致这个“名为___的EntityManager没有持久性提供程序”异常?

时间:2015-04-02 16:19:32

标签: java xml google-app-engine jpa gradle

我已经尝试过这几天了,但是我试过的很多东西都没有用!

  

javax.persistence.PersistenceException:没有持久性提供程序   EntityManager命名为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。

1 个答案:

答案 0 :(得分:1)

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