0

Google Endpoints 是否可以通过 Cloud 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;
}
}

语言端点类:

@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;
}
}
4

1 回答 1

2

我想到了。
首先,eclipse插件只是写它在你尝试生成端点库时遇到了错误,你调用always use the good old scripts in the sdk (endpoints.cmd) 并获取完整的日志。

这是我在日志中看到的:“线程“主”java.lang.NoClassDefFoundError 中的异常:javax/persistence/EntityManager”

问题在于,尽管从项目中删除了 Datanucleus,但它的 jar 和 Hibernate 的 jar 中的某些功能似乎发生了冲突。因此,我没有使用标准的 JPA EMF,而是使用了 HibernateUtil 和 SessionFactory。

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

于 2013-03-31T21:07:08.293 回答