使用Hibernate over Cloud SQL的Google Endpoint示例

时间:2013-03-23 15:38:50

标签: hibernate google-cloud-sql google-cloud-endpoints

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

1 个答案:

答案 0 :(得分:2)

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

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

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

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