質問

Googleが新しいサービスであるGoogleCloud Sqlを発表したので、gwt + jpa + hibernate + spring + mavenWebアプリケーションをgaeに移行することにしました。 そのため、ローカルおよびgaeでアプリを起動するときに問題が発生します。 これが原因でdaobeanの作成中にエラーが発生しました: ジェネラコディセタグプレ

つまり、休止状態でjpa-2.0の代わりにjpa-1.0を使用しているように見えました(jpa 1.0にはメソッドがないため:

getValidationMode()

ライブラリを確認しました...すべて問題ありません-jpa2.0とhibernate-jpa-2.0-api.jarを使用します。 しかし、私は問題を見つけました: gaeなしでコードを使用し、別のdbを使用すると、すべて問題ありません。実際のところ、appengine sdkには独自のJPAが含まれており、バージョンは1.0です(ここから引用 App EngineでのJPAの使用

JPAおよびデータストアJARは、App Engine JavaSDKに含まれています。それらはappengine-java-sdk / lib / user / orm /ディレクトリにあります。 JARをアプリケーションのwar / WEB-INF / lib /ディレクトリにコピーします。

アプリケーションが起動すると、私の代わりにappenginesdkのjpa1.0(javax.persistence.spi.PersistenceUnitInfoのメソッドgetValidationMode()なし)が使用されます。

では、この問題を解決して、アプリに適切なjarを使用させるにはどうすればよいですか? これが私のpersistence.xmlでもあります: ジェネラコディセタグプレ

役に立ちましたか?

解決

Hibernate JPAサポートはJPA2.0仕様を使用しているため、いくつかの問題があります。ただし、Google AppEngineはJPA1.0仕様のみをサポートしています。私も同じ問題を抱えていました。そこでは、(HibernateJPAの代わりに)SpringHibernateサポートを使用しました。

あなたの問題についても、SpringHibernateサポートを使用する方が良いと思います。

他のヒント

古いバージョンのhibernate(jpa 1と互換性があります)を使用する必要があります。GAEはこれらのことをあなたに強制します。実際、JPAがサポートされていることを知りませんでした。JDOのみがサポートされていると思いました。

persistence.xmlでユーザー名とパスワードを定義する理由がわかりません。

これらの認証情報は必要なかったため、アプリのDBへのアクセスは、許可されたアプリのIDを指定するGoogle SQLCloudのコンソール管理から制限されていると思います。

eclipseを使用している場合、Java用のGAEプロジェクトはGAEjarをWEB-INF \ libにコピーし、DataNucleusとGeronimoからJPA jarを削除して、Hibernatejarをコピーするだけだと思います。 私はこれを試したことがないと思います。

頑張ってください!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top