Esta é uma limitação conhecida do validador de esquema, verifique HHH-2315 . Então você tem três opções aqui (na verdade quatro, mas acho que desativar a validação não é desejado). Qualquer:
-
Use umfloatem vez de umdoubleno nível Java - isso pode não ser uma opção.
-
Patchorg.hibernate.mapping.Table.validateColumns(Dialect dialect, Mapping mapping, TableMetadata tableInfo)para adicionar uma condição especial para este caso em particular - esta não é realmente uma opção leve.
-
Estende oorg.hibernate.dialect.Oracle10gDialectpara fazê-lo usarfloatpara o tipo SQLDOUBLE
public class MyOracle10gDialect extends Oracle10gDialect { public MyOracle10gDialect() { super(); } protected void registerNumericTypeMappings() { super.registerNumericTypeMappings(); registerColumnType( Types.DOUBLE, "float" ); } }
A opção posterior parece segura, mas exigirá alguns testes para ver se não introduz nenhuma regressão. Eu não olhei para o código do driver JDBC da Oracle, então não posso dizer como
float e double precision diferem ao nível do condutor.