0

Google エンドポイントは 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;
}
}
4

1 に答える 1

2

私はそれを考え出した。
まず、Eclipse プラグインは、エンドポイント ライブラリを生成しようとしたときにエラーが発生したことを書き込みます。SDK (endpoints.cmd) 内の古き良きスクリプトを常に使用し、完全なログを取得します。

これは私がログで見たものです:「スレッド「メイン」java.lang.NoClassDefFoundErrorでの例外:javax/persistence/EntityManager」

問題は、プロジェクトから Datanucleus を削除したにもかかわらず、一部の機能がその jar と Hibernate の機能と衝突しているように見えることでした。そこで、標準の JPA EMF を使用する代わりに、HibernateUtil と SessionFactory を使用しました。

もう 1 つの問題は、明らかに String を API の戻り値として使用できないことです。

于 2013-03-31T21:07:08.293 に答える