Monday, July 28, 2008

Oracle 10g doubles and Hibernate

I needed to migrate a chunk of data from an example Derby database up to Oracle 10g today. I found a minor issue with the Hibernate mappings that I was creating. In Derby I could happily have double columns, and these needed to be converted to binary_double columns in Oracle.

However I kept having issues with the schema validation in hibernate :

Wrong column type: binary_double, expected: double precision


After looking into the source for the dialect mappings I've found that creating a new dialect that extends the Oracle 9 one as follows solves this problem :

public class Oracle10Dialect extends Oracle9Dialect

{

public Oracle10Dialect()

{

super();

registerColumnType(Types.DOUBLE, "binary_double");

}


}

Then use this class in the persistence.xml file instead of the Oracle9Dialect.

No comments: