title: MySQLSyntaxErrorException: Table XYZ doesn't exist
body: <p>I am using JPA and c3p0 and attempting to query a table and getting back a stack trace claiming that the table doesn't exist. I can open a connection to the db in, for example, DbVisualizer, and see the table there. In fact, the debug statements from my app show it is able to make a connection and test its viability. But then it is not finding the table. </p>
  
  <pre><code>15:45:53.940 [http-8080-1] DEBUG o.h.e.j.i.LogicalConnectionImpl - Obtaining JDBC connection
  15:45:53.940 [http-8080-1] DEBUG c.m.v.c.i.C3P0PooledConnectionPool - Testing PooledConnection [com.mchange.v2.c3p0.impl.NewPooledConnection@4d687dcd] on CHECKOUT.
  15:45:53.949 [http-8080-1] DEBUG c.m.v.c.i.C3P0PooledConnectionPool - Test of PooledConnection [com.mchange.v2.c3p0.impl.NewPooledConnection@4d687dcd] on CHECKOUT has SUCCEEDED.
  15:45:53.950 [http-8080-1] DEBUG c.m.v.resourcepool.BasicResourcePool - trace com.mchange.v2.resourcepool.BasicResourcePool@7930ebb [managed: 3, unused: 2, excluded: 0] (e.g. com.mchange.v2.c3p0.impl.NewPooledConnection@3e30e173)
  15:45:53.950 [http-8080-1] DEBUG o.h.e.j.i.LogicalConnectionImpl - Obtained JDBC connection
  15:45:53.966 [http-8080-1] DEBUG org.hibernate.SQL - select alert0_.rrdb_key as rrdb1_0_, alert0_.date as date0_, alert0_.hostname as hostname0_, alert0_.message as message0_, alert0_.program as program0_ from reportsDb.alerts alert0_ where (alert0_.message not like '%Anomolous%') and (alert0_.message not like '%Requeue%')
  Hibernate: select alert0_.rrdb_key as rrdb1_0_, alert0_.date as date0_, alert0_.hostname as hostname0_, alert0_.message as message0_, alert0_.program as program0_ from reportsDb.alerts alert0_ where (alert0_.message not like '%Anomolous%') and (alert0_.message not like '%Requeue%')
  15:45:54.013 [http-8080-1] DEBUG c.m.v2.c3p0.impl.NewPooledConnection - com.mchange.v2.c3p0.impl.NewPooledConnection@4d687dcd handling a throwable.
  com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'reportsDb.alerts' doesn't exist
      at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.6.0_45]
      at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) ~[na:1.6.0_45]
      at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) ~[na:1.6.0_45]
      at java.lang.reflect.Constructor.newInstance(Constructor.java:513) ~[na:1.6.0_45]
      at com.mysql.jdbc.Util.handleNewInstance(Util.java:406) ~[mysql-connector-java-5.1.6.jar:na]
  ...
  </code></pre>
  
  <p>Here is persistence.xml (in /src/main/resources/META-INF):</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
  &lt;persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"&gt;
      &lt;persistence-unit name="reportsDb" transaction-type="RESOURCE_LOCAL"&gt;
          &lt;description&gt;Hibernate&lt;/description&gt;
          &lt;class&gt;com.pronto.mexp.common.entity.Alert&lt;/class&gt;
      &lt;/persistence-unit&gt;
  &lt;/persistence&gt;
  </code></pre>
  
  <p>A subsection of applicationContext.xml:</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
  &lt;beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns:context="http://www.springframework.org/schema/context"
         xsi:schemaLocation="http://www.springframework.org/schema/beans
         http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
         http://www.springframework.org/schema/context
         http://www.springframework.org/schema/context/spring-context-3.1.xsd"&gt;
  
      &lt;bean id="jpaDialect" class="org.springframework.orm.jpa.vendor.HibernateJpaDialect"/&gt;
  
      &lt;bean id="reportsDbEntityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"&gt;
          &lt;property name="dataSource" ref="reportsDbDataSource" /&gt;
          &lt;property name="jpaVendorAdapter"&gt;
              &lt;bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"&gt;
                  &lt;property name="showSql" value="true"/&gt;
                  &lt;property name="generateDdl" value="false" /&gt;
                  &lt;property name="databasePlatform" value="org.hibernate.dialect.MySQL5InnoDBDialect" /&gt;
              &lt;/bean&gt;
          &lt;/property&gt;
          &lt;property name="persistenceUnitName" value="reportsDb" /&gt;
          &lt;property name="jpaDialect" ref="jpaDialect"/&gt;
      &lt;/bean&gt;
  
      &lt;bean id="reportsDbDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"&gt;
          &lt;property name="driverClass" value="com.mysql.jdbc.Driver"/&gt;
          &lt;!--&lt;property name="jdbcUrl" value="jdbc:mysql://devdbrw01:3306/mexp"/&gt;--&gt;
          &lt;property name="jdbcUrl" value="jdbc:mysql://report101:3306/worker_events"/&gt;
          &lt;property name="user" value="********"/&gt;
          &lt;property name="password" value="********"/&gt;
          &lt;property name="acquireRetryDelay" value="1000"/&gt;
          &lt;property name="acquireRetryAttempts" value="4"/&gt;
          &lt;property name="breakAfterAcquireFailure" value="false"/&gt;
          &lt;property name="testConnectionOnCheckout" value="true"/&gt;
          &lt;property name="maxConnectionAge" value="14400"/&gt;
          &lt;property name="maxIdleTimeExcessConnections" value="1800"/&gt;
      &lt;/bean&gt;
  
      &lt;!-- DAOs --&gt;
      &lt;bean id="genericReportsDbDAO" class="com.pronto.mexp.common.dal.GenericReportsDbJPADAOImpl"/&gt;
  
      &lt;bean id="alertJPADAO" class="com.pronto.mexp.dal.AlertJPADAOImpl" parent="genericReportsDbDAO"/&gt;
  &lt;/beans&gt;
  </code></pre>
  
  <p>The thing I find suspicious is the part of the hibernate query where it tries to query <code>select ... from reportsDb.alerts alert0_</code> - how do I confirm that "reportsDb" actually stands for my data source that I spec'd in applicationContext.xml?</p>
  
  <p>ETA:
  The entity, Alert, looks like this:</p>
  
  <pre><code>@Entity
  @Table(name = "alerts", catalog = "reportsDb")
  public class Alert {
  
      int rrdbKey;
      String hostname = "";
      String message = "";
      String program = "";
      Date date = new Date();
  
      @javax.persistence.Column(name = "rrdb_key", nullable = false, insertable = false, updatable = false, length = 10, precision = 0)
      @Id
      public int getRrdbKey() {
          return rrdbKey;
      }
  
      public void setRrdbKey(int rrdbKey) {
          this.rrdbKey = rrdbKey;
      }
  
      @javax.persistence.Column(name = "hostname", nullable = false, insertable = false, updatable = false, length = 32, precision = 0)
      @Basic
      public String getHostname() {
          return hostname;
      }
  
      public void setHostname(String hostname) {
          this.hostname = hostname;
      }
  
      @javax.persistence.Column(name = "message", nullable = false, insertable = false, updatable = false, length = 128, precision = 0)
      @Basic
      public String getMessage() {
          return message;
      }
  
      public void setMessage(String message) {
          this.message = message;
      }
  
      @javax.persistence.Column(name = "program", nullable = true, insertable = false, updatable = false, length = 40, precision = 0)
      @Basic
      public String getProgram() {
          return program;
      }
  
      public void setProgram(String program) {
          this.program = program;
      }
  
      @javax.persistence.Column(name = "date", nullable = false, insertable = false, updatable = false, length = 19, precision = 0)
      @Basic
      public Date getDate() {
          return date;
      }
  
      public void setDate(Date date) {
          this.date = date;
      }
  }
  </code></pre>