1

我試圖移植到Android的工作室和我的應用程序引擎的代碼使用下面谷歌應用引擎後端 - Javax.persistence失蹤 - Android Studio中

import javax.persistence.Entity; 
import javax.persistence.Id; 

@Entity 
public class AppVersion { 

@Id 
private String applicationName; 
private int minVersionRequired; 

public String getApplicationName() { 
    return applicationName; 
} 
public int getMinVersionRequired() { 
    return minVersionRequired; 
} 
public void setApplicationName(String applicationName) { 
    this.applicationName = applicationName; 
} 
public void setminVersionRequired(int minVersionRequired) { 
    this.minVersionRequired = minVersionRequired; 
} 
} 

列出的實體框架只是創造Android Studio中後端( 0.5.6)不起作用,我無法導入javax.persistence。*

從這個link我發現我需要創建一個persistence.xml文件(這是在Eclipse中自動創建的)。我只是無法弄清楚它應該去哪裏的文件結構。我知道它需要在META-INF文件夾中,但我不知道哪裏對應於gradle(或者它是否必須在gradle構建文件中創建)。 當前文件結構:

-src 
    -main 
    -java 
     -com.package.test 
     class files 
    -webapp 
     -css 
     -js 
     -WEB-INF 

搖籃構建文件:

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

repositories { 
    mavenCentral(); 
} 

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

sourceCompatibility = 1.7 
targetCompatibility = 1.7 

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

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

回答

2

Android Studio中的App Engine樣本不使用JPA。

但是,如果你想使用JPA,您需要添加JPA依賴關係,這說明,你可能會發現這些是什麼的https://developers.google.com/appengine/docs/java/datastore/jpa/overview-dn2

所以這些(或它們的一些子集)

  • ASM-4.0.jar
  • DataNucleus將-API的JP-A-3.1.3.jar
  • DataNucleus將核 - 3.1.3.jar
  • JDO-API-3.0.1.jar
  • DataNucleus將-API-JDO-3.1.3.jar
  • DataNucleus將-的AppEngine-2.1.2.jar
  • Geronimo的jpa_2.0_spec-1.0.jar
  • JTA-1.1.jar

旁觀maven.org對於那些依賴將揭示如何將它們納入的build.gradle文件,編譯依賴關係:

ASM-4.0:

compile 'org.ow2.asm:asm:4.0' 

DataNucleus將-API JPA-3.1.3:

compile 'org.datanucleus:datanucleus-api-jpa:3.1.3' 

等。

您希望版本與appengine sdk中的版本完全相同,以確保兼容性。還要確保你在你的項目上運行增強任務。

+0

那麼這刪除這些錯誤,我現在給你一個給予好評,但我稍後再進行測試之前,我接受它。不過,我無法在Maven.org上找到appengine-jsr107cache:1.1或jta:1.1。另外,增強任務是做什麼的? – easycheese

+0

您需要在JPA/JDO實體類上運行增強功能,以便系統對其有用(http://www.datanucleus.org/products/accessplatform_2_1/enhancer.html)。你需要在編譯之後但在WAR之前運行它, 所以可能類似於 war.dependsOn appengineEnhance 可能適合你。 – loosebazooka

+0

我不確定關於jsr和jta的依賴關係,我想知道這些依賴關係是否有所不同。舊的maven示例沒有使用jta,因此您可能不需要包含它,但jsr緩存依賴項位於以下位置:http://search.maven.org/#artifactdetails|net.sf.jsr107cache|jsr107cache|1.1 | jar – loosebazooka

0

嘗試增加以下到的build.gradle

compile group: 'javax.persistence', name: 'persistence-api', version: '1.0' 
相關問題