Вопрос

Когда Google представил новую службу - Google Cloud Sql, я решил перенести веб-приложение gwt + jpa + hibernate + spring + maven на gae. Так что у меня проблема при запуске приложения локально и на gae. У меня возникла ошибка при создании компонента dao, вызванная следующим:

родовое слово

Мне показалось, что я использовал jpa-1.0 вместо jpa-2.0 со спящим режимом (из-за отсутствия метода jpa 1.0:

<цитата>

getValidationMode ()

Я проверил свои библиотеки ... все в порядке - использую jpa 2.0 с hibernate-jpa-2.0-api.jar. Но я нашел промлем: Когда я использую свой код без gae и использую другой db, все в порядке. Дело в том, что appengine sdk включает собственный JPA, а его версия - 1.0 (цитата отсюда Использование JPA с App Engine )

<цитата>

JPA и JAR хранилища данных включены в SDK Java App Engine. Вы можете найти их в каталоге appengine-java-sdk / lib / user / orm /. Скопируйте файлы JAR в каталог war / WEB-INF / lib / вашего приложения.

Когда приложение запускается, оно использует jpa 1.0 (без метода getValidationMode () в javax.persistence.spi.PersistenceUnitInfo) из appengine sdk вместо моего.

Итак, как мне решить эту проблему, чтобы мое приложение использовало правильные jar-файлы? Вот и мой файл persistence.xml:

родовое слово
Это было полезно?

Решение

Есть некоторая проблема с поддержкой Hibernate JPA, потому что он использовал спецификацию JPA 2.0.Но Google App Engine поддерживает только спецификацию JPA1.0.У меня тоже была такая же проблема, потому что я использовал поддержку Spring Hibernate (вместо Hibernate JPA).

Для вашей проблемы я также думаю, что лучше использовать поддержку Spring Hibernate.

Другие советы

Вам следует использовать старую версию спящего режима (совместимую с jpa 1).GAE навязывает вам все это.На самом деле я не знал, что он поддерживает JPA - я думал, что поддерживается только JDO.

Я не понимаю, почему вы определяете имя пользователя и пароль в файле persistence.xml.

Я думаю, что вам не нужны эти учетные данные, потому что доступ приложения к БД ограничен из консоли администрирования Google SQL Cloud, где вы указываете разрешенные идентификаторы приложений.

Если вы используете eclipse, я думаю, что проект GAE для java просто копирует банки GAE в WEB-INF \ lib, удаляет банки JPA из DataNucleus и Geronimo и копирует банку Hibernate. Думаю, я никогда этого не пробовал.

Удачи!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top