Alex Rivera | Logout

Hibernate: Found: float, expected: double precision

Asked 2010-03-26T16:36:12.590
11

I have a problem with the mapping of Oracle Float double precision datatype to Java Double datatype. The hibernate schema validator seems to fail when the Java Double datatype is used.

org.hibernate.HibernateException: Wrong column type in DB.TABLE for column amount. Found: float, expected: double precision

The only way to avoid this is to disable schema validation and hope the schema is in sync with the app about to run. It must be fixed before it goes out to production.

App's evironment:
- Grails 1.2.1
- Hibernate-core 3.3.1.GA
- Oracle 10g

Edit
Report

1 Answer

14

Unless you define a column type as double precision in DDL file, Oracle will convert it to float column type. So you need to register double as float column type in dialect class.

public class Oracle10gDialectExtended extends Oracle10gDialect {

    public Oracle10gDialectExtended() {
        super();
        registerColumnType(Types.DOUBLE, "float");
    }
}

Finally register Oracle10gDialectExtended in Hibernate/JPA configuration as hibernate.dialect.

answered 2012-11-07T14:48:38.603

Your Answer