Google Endpoints是否可以通过云端SQL使用Hibernate?
有些人可以发一个简短的代码示例吗?
我试图这样做,并在生成客户端库时遇到一般错误
语言课程:
@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 :(得分:2)
我明白了。
首先,eclipse插件只是写道,当你尝试生成端点库时它遇到了错误,你总是调用sdk中的好旧脚本(endpoints.cmd)并得到完整的日志。
这是我在日志中看到的: “线程中的异常”主“java.lang.NoClassDefFoundError:javax / persistence / EntityManager”
问题在于,尽管从项目中删除了Datanucleus,但似乎有些功能在它的罐子和Hibernate中碰撞。 因此,我没有使用标准的JPA EMF,而是使用了HibernateUtil和SessionFactory。
另一个问题是显然String不能用作API的返回值。