2013-03-31 5 views
0

Я пытаюсь получить приложение для разработки приложений Google App, работающее с JPA, Google Cloud SQL и локальной базой данных MySQL. Я использую плагин GAE eclipse. Я зарегистрировался для экземпляра SQL облака Google. Настроил параметры приложения в проекте, чтобы использовать Google Cloud SQL, и ввел информацию о подключении для локальной базы данных MySQL и для экземпляра облачного SQL.GAE google cloud sql JPA local mysql с пустыми результатами

Усилители ядра данных собирают мои 57 классов, и я вижу журнал с успешно оптимизированными классами. Я запускаю свое приложение в Eclipse, и среда dev успешно запускается, и я могу перейти в мое приложение через браузер.

Проблема в том, что данные в базе данных не могут быть получены из вызовов JPA. Я не вижу ошибок в выводе приложения. Я запускаю отладчик, и вызовы JPA запускаются успешно, не выбрасывая исключение в исходный код приложения. Я получаю пустой список из поиска.

Я не уверен, что делать здесь. Я исследовал онлайн в течение некоторого времени, и я не могу понять, что я делаю неправильно. Трудно отследить что-то, когда у меня нет исключения или что-то использовать.

Моя догадка заключается в том, что что-то не удается, но ошибка может быть проглочена или, может быть, ограничение. Я также попытался изменить вызовы JPA, используя построитель критериев, а затем используя прямо вверх JPQL. Все равно получайте те же результаты.

Проверено аргументы dev-серверу, и я вижу аргументы, которые используются в конфигурации, которую я ввел для локального сервера mysql. Возможно ли, что аргументы игнорируются каким-то образом?

Любая помощь будет оценена по достоинству.

persistence.xml - (только 2 классов для тестирования)

<persistence-unit name="iberis-jpa"> 
    <provider>org.datanucleus.api.jpa.PersistenceProviderImpl</provider> 
    <class>com.bizznetworxonline.iberis.core.SystemArea</class> 
    <class>com.bizznetworxonline.iberis.core.SystemUnit</class> 

    <exclude-unlisted-classes>true</exclude-unlisted-classes> 

    <properties> 
     <property name="datanucleus.NontransactionalRead" value="true"/> 
     <property name="datanucleus.NontransactionalWrite" value="true"/> 
     <property name="datanucleus.ConnectionURL" value="appengine"/> 
    </properties> 
</persistence-unit> 

JPQL вызова:

public List<?> findAll(Class<?> entityClass) 
{ 

    EntityManager em = JPA_EMF.get().createEntityManager(); 

    javax.persistence.Query q = em.createQuery("SELECT o FROM " + entityClass.getSimpleName() + " o",entityClass); 

    List<?> results = q.getResultList(); 

    return results; 
} 

Выход из консоли:

Mar 30, 2013 9:49:06 PM com.google.apphosting.utils.config.AppEngineWebXmlReader readAppEngineWebXml 

INFO: Successfully processed /home/user/Documents/eclipse-workspace/IberisAdmin/war/WEB-INF/appengine-web.xml 

Mar 30, 2013 9:49:06 PM com.google.apphosting.utils.config.AbstractConfigXmlReader readConfigXml 

INFO: Successfully processed /home/user/Documents/eclipse-workspace/IberisAdmin/war/WEB-INF/web.xml 

Mar 30, 2013 9:49:06 PM com.google.appengine.tools.development.SystemPropertiesManager setSystemProperties 

INFO: Overwriting system property key 'java.util.logging.config.file', value '/home/user/.eclipse/org.eclipse.platform_3.7.0_155965261/plugins/com.google.appengine.eclipse.sdkbundle_1.7.6/appengine-java-sdk-1.7.6/config/sdk/logging.properties' with value 'WEB-INF/logging.properties' from '/home/user/Documents/eclipse-workspace/IberisAdmin/war/WEB-INF/appengine-web.xml' 

Mar 30, 2013 9:49:07 PM com.google.apphosting.utils.jetty.JettyLogger info 
INFO: Logging to JettyLogger(null) via com.google.apphosting.utils.jetty.JettyLogger 

Mar 30, 2013 9:49:07 PM com.google.apphosting.utils.jetty.JettyLogger info 
INFO: jetty-6.1.x 

Mar 30, 2013 9:49:10 PM com.sun.faces.config.ConfigureListener contextInitialized 
INFO: Initializing Mojarra 2.1.12 (20120814-1522) for context '' 

Mar 30, 2013 9:49:13 PM com.sun.faces.spi.InjectionProviderFactory createInstance 
INFO: JSF1048: PostConstruct/PreDestroy annotations present. ManagedBeans methods marked with these annotations will have said annotations processed. 

Mar 30, 2013 9:49:21 PM org.primefaces.webapp.PostConstructApplicationEventListener processEvent 
INFO: Running on PrimeFaces 3.5 

Mar 30, 2013 9:49:21 PM org.primefaces.extensions.application.PostConstructApplicationEventListener processEvent 
INFO: Running on PrimeFaces Extensions 0.6.3 

Mar 30, 2013 9:49:22 PM com.google.apphosting.utils.jetty.JettyLogger info 
INFO: Started [email protected]:8888 

Mar 30, 2013 9:49:22 PM com.google.appengine.tools.development.AbstractServer startup 
INFO: Server default is running at http://localhost:8888/ 

Mar 30, 2013 9:49:22 PM com.google.appengine.tools.development.AbstractServer startup 
INFO: The admin console is running at http://localhost:8888/_ah/admin 

Mar 30, 2013 9:49:22 PM com.google.appengine.tools.development.DevAppServerImpl start 
INFO: Dev App Server is now running 

Mar 30, 2013 9:49:35 PM com.google.appengine.api.datastore.dev.LocalDatastoreService init 
INFO: Local Datastore initialized: 
Type: High Replication 
Storage: /home/user/Documents/eclipse-workspace/IberisAdmin/war/WEB-INF/appengine-generated/local_db.bin 

Mar 30, 2013 9:49:35 PM com.google.appengine.api.datastore.dev.LocalDatastoreService load 
INFO: The backing store, /home/user/Documents/eclipse-workspace/IberisAdmin/war/WEB- INF/appengine-generated/local_db.bin, does not exist. It will be created. 

Mar 30, 2013 9:49:37 PM com.google.apphosting.utils.jetty.JettyLogger warn 

ответ

0

Проблема с запросом Я полагаю.

Попробуйте изменить запрос некоторые вещи Подобно примеры, приведенные в ссылке ниже http://www.datanucleus.org/products/accessplatform_3_0/jpa/jpql.html

Критерии не подтверждаются, как мне известно

Если did'nt работать, Делитесь entityClass контроллеры, а также.

+0

Я уже изменил свой код, чтобы использовать jpql, как то, что я разместил выше. Это не работает. Мой контроллер - это простой управляемый сеансом компонент, который все это делает, - это вызов этой функции для получения данных. Я не думаю, что проблема в контроллере. Виртуальная машина, которую я использую для моего разработчика, немного старше Ubuntu 12.04, и она прошла несколько обновлений для базовой ОС и Eclipse. Я предполагаю, что в моей среде что-то серьезно фьюхарно. Поскольку никто другой не имеет этой проблемы. Странно, что я не получаю ни одного сообщения об ошибке. –

+0

Я собираюсь попробовать установить новую новую среду в новом vm, и я проведу там, чтобы узнать, что произойдет. Надеюсь, это сработает. –

1

Я думаю, что следующий элемент:

<property name="datanucleus.ConnectionURL" value="appengine"/> 

является виновником. Это настройка для использования хранилища данных App Engine в качестве уровня хранения.

Можете ли вы попробовать следующее?

Во-первых, пожалуйста, измените persistence.xml следующим образом:

<properties> 
    <!-- Remove the above property and add the following two --> 
    <property name="javax.persistence.jdbc.driver" value="com.google.appengine.api.rdbms.AppEngineDriver" /> 
    <property name="javax.persistence.jdbc.url" value="jdbc:google:rdbms://your-project:your-instance/database_name" /> 
</properties> 

Помещенные DataNucleus-РСУБД x.y.z.jar в каталог war/WEB-INF/lib и поместите mysql-connector-java-x.y.z-bin.jar в каталог appengine-sdk/lib/impl, если вы этого не сделали.