title: What are the best workarounds for known problems with Hibernate's schema validation of floating point columns when using Oracle 10g?
body: <p>I have several Java classes with double fields that I am persisting via Hibernate.  For example, I have</p>
  
  <pre><code>@Entity
  public class Node ...
  
    private double value;
  </code></pre>
  
  <p>When Hibernate's <code>org.hibernate.dialect.Oracle10gDialect</code> creates the DDL for the Node table, it maps the value field to a "double precision" type.</p>
  
  <pre><code>create table MDB.Node (... value double precision not null, ...
  </code></pre>
  
  <p>It would appear that in Oracle, "double precision" is an alias for "float".  So, when I try to verify the database schema using the <code>org.hibernate.cfg.AnnotationConfiguration.validateSchema()</code> method, Oracle appears to describe the value column as a "float". This causes Hibernate to throw the following Exception </p>
  
  <pre><code>org.hibernate.HibernateException: Wrong column type in DBO.ACL_RULE for column value. Found: float, expected: double precision
  </code></pre>
  
  <p>A very similar problem is listed in Hibernate's JIRA database as <a href="http://opensource.atlassian.com/projects/hibernate/browse/HHH-1961" rel="noreferrer">HHH-1961</a>. I'd like to avoid doing anything that will break MySql, Postgres, and Sql Server support so extending the <code>Oracle10gDialect</code> appears to be the most promising of the workarounds mentioned in <a href="http://opensource.atlassian.com/projects/hibernate/browse/HHH-1961" rel="noreferrer">HHH-1961</a>. But extending a Dialect is something I've never done before and I'm afraid there may be some nasty gotchas.  What is the best workaround for this problem that won't break our compatibility with MySql, Postgres, and Sql Server?   </p>