使用Spring Hibernate的Google Appengine Cloud SQL问题

我在Amazon EC2上使用MySQL运行Spring Hibernate Application。 我正在考虑将我的应用程序移植到Google App Engine,因为Google现在支持使用Google Can SQL的MySQL。

因此,将我现有的应用程序配置为Google App Engine Web应用程序,然后编译代码而不会出现任何错误。 我没有更改任何内容到我现有的应用程序,它编译并创建了所需的表,服务器已成功启动。

但是,当运行通过hibernate访问数据库的应用程序时,我收到以下错误。

org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is org.hibernate.exception.JDBCConnectionException: Cannot open connection at org.springframework.orm.hibernate3.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:596) at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:371) at org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:335) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:105) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202) at $Proxy30.findById(Unknown Source) at com.openentry.catgen.services.impl.WebsiteServiceImpl.getMasterDomain(WebsiteServiceImpl.java:99) 

我正在为我的实体类使用注释。

有什么我需要改变的吗?

下面是我的applicationContext.xml

     ${hibernate.dialect} ${hibernate.show_sql} ${hibernate.format_sql} ${hibernate.generate_statistics} ${hibernate.connection.useUnicode} ${hibernate.connection.characterEncoding} ${hibernate.connection.charSet} ${hibernate.hbm2ddl.auto}           

要在Eclipse localhost和appengine实例上运行Google Cloud SQL,您必须检查以下几点。

  1. 使用创建Cloud SQL实例的相同Google帐户登录您的eclipse。
  2. 右键单击项目属性转到Google> Appengine,然后选中启用Google Cloud SQL实例
  3. 为localhost选择MySQL实例并配置其值。

     Hostname : localhost Database Name : yourdatabasename Port No : 3306 Username : yourMySQLUserName Password : yourPassword Path to MySQL JDBC Jar : Path where your mysql-connector-java-xxxx.jar // I usually put this jar on the WEB-INF/lib 
  4. 同时配置Google Cloud SQL实例:

     Instance Name : something:something // This you will get under Google Cloud SQL tab under Google API Console Database Name : yourdatabasename Username : yourMySQLUserName Password : yourPassword 
  5. 只需复制你的mysql-connector-java-xxxx.jar文件并将其粘贴到Eclipse中的Appengine SDK的这个位置下

     // This path is shown for Eclipse D:\MyEclipse\plugins\com.google.appengine.eclipse.sdkbundle_1.7.2.1\appengine-java-sdk-1.7.2.1\lib\impl\ 
  6. 应将Driver ClassName和Database Access URL更改为以下值。

     AppengineDriver Class Name : com.google.appengine.api.rdbms.AppEngineDriver Database Access URL : jdbc:google:rdbms://instance_name/database_name eg jdbc:google:rdbms://XXXXXX:xxxxx/XXX_databasename user : username // Your Database User by default its root password : password // Your Database Password by default its blank in GAE Cloud SQL 
  7. 通过遵循所有内容,您可以轻松地在Eclipse中配置Google Cloud SQL。

我认为这是一个连接问题。您编写数据库配置错误或数据库和应用程序之间的连接有数据丢失。