2013-03-31 4 views
0

JPA, Google Cloud SQL 및 로컬 MySQL 데이터베이스로 작업하는 개발 Google App Engine 앱을 얻으려고합니다. GAE Eclipse 플러그인을 사용하고 있습니다. Google Cloud SQL 인스턴스에 가입했습니다. Google Cloud SQL을 사용하고 로컬 MySQL 데이터베이스 및 클라우드 SQL 인스턴스에 대한 연결 정보를 입력하도록 프로젝트의 앱 엔진 설정을 구성했습니다.GAE google cloud sql 빈 결과가있는 JPA 로컬 mysql

데이터 핵 강화제가 내 57 개의 클래스를 선택하고 성공적으로 최적화 된 클래스가있는 로그를 확인합니다. 이클립스 내에서 내 응용 프로그램을 실행하고 dev에 환경이 성공적으로 발생하고 브라우저를 통해 내 애플 리케이션을 얻을 수 있습니다.

문제점은 데이터베이스의 데이터를 JPA 호출을 통해 검색 할 수 없다는 것입니다. 응용 프로그램 출력에 오류가 표시되지 않습니다. 디버거를 통해 JPA 호출을 성공적으로 내 애플 소스 코드에서 예외를 던지지 않고 실행을 실행합니다. 내가 검색에서 빈 목록을 얻을.

여기에 무엇을해야할지 모르겠습니다. 나는 오랫동안 온라인에서 연구를 해왔고, 내가 뭘 잘못하고 있는지 알 수 없다. 예외 나 사용할 것이 없을 때 무언가를 추적하기가 어렵습니다.

내 생각 엔 뭔가 실패했지만 오류가 삼켜 지거나 제한 될 수 있습니다. 나는 또한 기준 빌더를 사용하여 JPA 호출을 변경 한 다음 곧은 JPQL을 사용하여 시도했다. 여전히 동일한 결과를 얻습니다.

dev 서버에 대한 인수를 확인했으며 로컬 mysql 서버에 입력 한 구성에서 사용되는 인수가 표시됩니다. 인수가 어떻게 든 무시 될 수 있습니까?

어떤 도움

주시면 감사하겠습니다.

의 persistence.xml -

<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 호출 (테스트 만 2 클래스 포함) : 콘솔에서

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

기준의이

가 작동뿐만 아니라 당신의하는 EntityClass 컨트롤러를 공유 did'nt 경우 내 지식의로 지원되지 않습니다 링크 아래에 표시된 예와 비슷한 일을 변경하려고합니다.

+0

나는 이미 위에 게시 한 것과 같이 jpql을 사용하도록 코드를 변경했습니다. 작동하지 않습니다. 내 컨트롤러는 데이터를 가져 오는 함수를 호출하는 간단한 세션 관리 빈입니다. 나는 문제가 컨트롤러에 있다고 생각하지 않는다. 내 dev에 사용하고있는 가상 머신은 우분투 12.04에서 약간 나이가 들었고 기본 OS와 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-RDBMS-x.y.z을.jar 파일을 war/WEB-INF/lib 디렉토리에 복사하고 mysql-connector-java-x.y.z-bin.jar 파일을 appengine-sdk/lib/impl 디렉토리에 넣으십시오.