2013-03-23 37 views
0

Google Endpoints是否与Hibernate over Cloud SQL一起使用?
有人可以发布一个简短的代码示例吗?
我试图这样做,一般遇到的错误而产生的客户端库Google Endpoint与Hibernate over Cloud的示例SQL

语言类:

@Entity 
@Table(name = "LANGUAGES") 
public class Language { 

private String languageIsoCode; 
private String languageName; 

public Language() {} 

@Id 
@Column(name = "LANGUAGE_ISO_CODE", unique = true, nullable = false, length = 8) 
public String getLanguageIsoCode() { 
    return this.languageIsoCode; 
} 

public void setLanguageIsoCode(String languageIsoCode) { 
    this.languageIsoCode = languageIsoCode; 
} 

@Column(name = "LANGUAGE_NAME", nullable = false, length = 160) 
public String getLanguageName() { 
    return this.languageName; 
} 

public void setLanguageName(String languageName) { 
    this.languageName = languageName; 
} 
} 

LanguageEndpoint类:

@Api 
public class LanguageEndpoint { 

@ApiMethod 
public String getLanguage(){ 
    EntityManager mgr = getEntityManager(); 
    Query q = mgr.createQuery("from Language"); 
    Language l = (Language) q.getResultList().get(0); 
    return l.getLanguageName(); 
} 

private static EntityManager getEntityManager() { 
    return EMF.hibernateGet().createEntityManager(); 
} 

} 

和EMF类:

public final class EMF { 
private static final EntityManagerFactory emfInstance = Persistence 
     .createEntityManagerFactory("transactions-optional"); 

private static final EntityManagerFactory emfHibernateInstance = Persistence 
     .createEntityManagerFactory("com.google.cloudsql.jpa"); 

private EMF() { 
} 

public static EntityManagerFactory get() { 
    return emfInstance; 
} 

public static EntityManagerFactory hibernateGet() { 
    return emfHibernateInstance; 
} 
} 
+0

请发布您尝试的代码,我们会尽力帮助。云端点运行在App Engine上,因此您可以在云端点方法中执行任何操作,您可以在App Engine中的任何其他位置执行任何操作。 – bossylobster 2013-03-23 16:17:06

+0

发布了代码。如果你看一下,我将不胜感激。谢谢 – 2013-03-28 17:50:33

回答

2

我明白了。
首先,eclipse插件只是写道,当您尝试生成端点库时遇到了错误,您始终使用sdk中的旧脚本(endpoints.cmd)调用并获取完整日志。

这是我在日志中看到: “异常线程‘main’java.lang.NoClassDefFoundError:使用javax /持久/ EntityManager的”

的问题是,尽管从项目中移除DataNucleus将,似乎有些功能会在它的Jars和Hibernate中发生碰撞。 所以不是使用标准的JPA EMF,而是转向HibernateUtil和SessionFactory。

另一个问题是,显然String不能用作API的返回值。