title: H2 JdbcSQLException: "Table not found" with camelcase table & entity name
body: <p>Using Spring Boot, with Spring Data JPA and H2 in-memory database (in PostgreSQL mode if it makes a difference).</p>
  
  <p>I have a table &amp; entity class named <code>ContentBlock</code>, yet H2 is complaining about missing <code>CONTENT_BLOCK</code> table, when I do a <code>findAll()</code> or <code>findOne()</code>:</p>
  
  <pre><code>org.h2.jdbc.JdbcSQLException: Table "CONTENT_BLOCK" not found
  </code></pre>
  
  <p>I'm not sure if uppercase/camelcase makes a difference, but where does the underscore in <code>CONTENT_BLOCK</code> come from?</p>
  
  <p>In my schema definition:</p>
  
  <pre><code>CREATE TABLE ContentBlock (
    id       BIGSERIAL PRIMARY KEY,
    content  TEXT
    -- etc
  );
  </code></pre>
  
  <p>And in the entity class:</p>
  
  <pre><code>@Entity
  @Table(name = "ContentBlock")
  public class ContentBlock {
      // ...
  }
  </code></pre>
  
  <p>(Of course I first tried without <code>@Table</code> annotation, as the class name exactly matches the table name.)</p>
  
  <p>With my other tables/entities, with names like <code>Asset</code>, there are no problems, and I don't need to explicitly specify the table name on Java side:</p>
  
  <pre><code>@Entity   
  public class Asset {
      // ...
  }
  </code></pre>
  
  <p>In my setup, the H2 datasource is explicitly defined like this:</p>
  
  <pre><code>@Bean
  public DataSource devDataSource() {  
          return new EmbeddedDatabaseBuilder()
            .generateUniqueName(true)
            .setType(EmbeddedDatabaseType.H2)
            .setScriptEncoding("UTF-8")
            .ignoreFailedDrops(true)
            .addScripts("database/init.sql", "database/schema.sql", "database/test_data.sql")
            .build();
      }
  </code></pre>
  
  <p>(Contents of <code>init.sql</code> is <code>SET MODE PostgreSQL;</code>)</p>
  
  <p>As workaround, I just renamed the <code>ContentBlock</code> table to <code>Block</code> in <code>schema.sql</code>, with <code>@Table(name = "Block")</code> in the Java class which I still call <code>ContentBlock</code>. </p>
  
  <p>But this is weird, <strong>surely you can map a table with camelcase name to an entity somehow?</strong> </p>