文档章节

Found: decimal, expected: double precision

地瓜2013
 地瓜2013
发布于 2015/05/27 01:05
字数 623
阅读 31
收藏 0
点赞 0
评论 0

场景:

老项目,只能查询数据库不能对其修改。。。所以hibernate anto 设置成 validate

异常: 

Hibernate: Found: decimal, expected: double precision

处理办法:

 

1、修改数据库字段,客户会杀死我的,抛弃。
2. 使用正确的对应方式改java对象: 当然如果你想一个一个的改的话,这是最好,最稳妥的办法。
   
    如果程序不继续抛出 Hibernate: Found: decimal, expected: double numric(19,0) 的话。

3. 读读异常名,方言发现decimal(当然我不知道什么意思),但是特么不影响理解,那就是类型不对了呗。
   
    引用牛逼的英语:
     
     Unless you define column type as double precision in DDL file, Oracle will it convert to float
     column type. So you need to register double as float column type in dialect class.
    
    public class Oracle10gDialectExtended extends Oracle10gDialect {

    public Oracle11gDialect() {
        super();
        registerColumnType(Types.DOUBLE, "float");
    }
    }  
    
    好吧,看在你可能不懂的份上,我翻译下,你要么写ddl文件定义到数据库列类别。或者你写java程序直接定义列。
    大概意思是:java程序和数据库接口类型对应不上了。那你定义就好了,就是写个方言的子类,在子类构造方法中
    定义你要解决的方案。
    
  4.把validate 改成 update (这是我最鄙视的)

  最终解决方案:

 public class FixSQLServerDialect extends SQLServerDialect{

	public FixSQLServerDialect(){
		super();
	
		registerColumnType( Types.DOUBLE, "decimal" );
		registerColumnType( Types.BIGINT, "decimal" );
		registerColumnType( Types.TINYINT, "decimal" );
      
    }
}

    备注:当然这不是好的解决方案,不是第二套 不修改其他不可控的文件。会出现重复定义指向的问题,不符合推广的概念

            

Hibernate: Found: decimal, expected: bit
和
Hibernate: Found: bit, expected: decimal
相互交替出现,就是你定义不是不定义也不是。。。这就需要你在这时候取舍,选的2套和3套结合的方式,修改java类属性
:就是boolean 改成 byte 或者其他能正常表示的,详见 下面java对象类型对应。
提醒:super()一定要加上,这是源码里面的构造函数,不要给自己制造未知麻烦。。


public SQLServerDialect() {
		registerColumnType( Types.VARBINARY, "image" );
		registerColumnType( Types.VARBINARY, 8000, "varbinary($l)" );
		registerColumnType( Types.LONGVARBINARY, "image" );
		registerColumnType( Types.LONGVARCHAR, "text" );
		registerColumnType( Types.BOOLEAN, "bit" );

		registerFunction( "second", new SQLFunctionTemplate( StandardBasicTypes.INTEGER, "datepart(second, ?1)" ) );
		registerFunction( "minute", new SQLFunctionTemplate( StandardBasicTypes.INTEGER, "datepart(minute, ?1)" ) );
		registerFunction( "hour", new SQLFunctionTemplate( StandardBasicTypes.INTEGER, "datepart(hour, ?1)" ) );
		registerFunction( "locate", new StandardSQLFunction( "charindex", StandardBasicTypes.INTEGER ) );

		registerFunction( "extract", new SQLFunctionTemplate( StandardBasicTypes.INTEGER, "datepart(?1, ?3)" ) );
		registerFunction( "mod", new SQLFunctionTemplate( StandardBasicTypes.INTEGER, "?1 % ?2" ) );
		registerFunction( "bit_length", new SQLFunctionTemplate( StandardBasicTypes.INTEGER, "datalength(?1) * 8" ) );

		registerFunction( "trim", new AnsiTrimEmulationFunction() );

		registerKeyword( "top" );
	}

 相关:hibernate aoto 设置

 相关:java.sql.types 类型对应  

 相关:参考外文博客解决方案

© 著作权归作者所有

共有 人打赏支持
地瓜2013
粉丝 2
博文 66
码字总数 7735
作品 0
大兴
程序员
MySQL数据类型

MySQL数据类型 Integer Types (Exact Value) - INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT Type Storage Minimum Value Maximum Value (Bytes) (Signed/Unsigned) (Signed/Unsi......

秋风醉了 ⋅ 2014/12/10 ⋅ 0

SQL Server的小数数值类型(float 和 decimal)用法

在SQL Server中,小数数值实际上只有两种数据类型:float 和 decimal。double precision 整体是数据类型,等价于 float(53),real等价于float(24),应该避免在程序中直接使用 double precisi...

长征6号 ⋅ 2016/03/10 ⋅ 0

Mysql中,int(10)和int(11)的区别

int(M) M指示最大显示宽度。最大有效显示宽度是255。显示宽度与存储大小或类型包含的值的范围无关 首先说一下MySQL的 数值类型,MySQL支持所有标准SQL数值数据类型。这些类型包括严格数值数据...

bengozhong ⋅ 2016/12/09 ⋅ 0

mysql常用数据类型的使用方式--数值型

1) BIGINT [(display_size)] [AUTO_INCREMENT] [UNSIGNED] [ZEROFILL] 存储大小:8字节 描述:最大整数类型(-9223372036854775808到9223372036854775807,无符号为0到1844674407370955161......

noteman ⋅ 2015/12/04 ⋅ 0

计算机浮点数系统

浮点数在计算机内的存储是怎样的呢?以双精度浮点数为例来说吧: Most nonzero floating-point numbers are normalized. This means they can be expressed as : x = ±(1 + f) *2^e Double...

SVD ⋅ 2015/10/28 ⋅ 0

DWS和各异构数据库的差异对比

类型名称 DWS建表类型 Impala建表类型 2字节整数 SMALLINT SMALLINT 4字节整数 INTEGER INT 8字节整数 BIGINT BIGINT 单精度浮点数 FLOAT4 (REAL) FLOAT 双精度浮点型 FLOAT8(DOUBLE PRECIS...

晨曦美 ⋅ 04/03 ⋅ 0

sqlite数据库的数据类型

可以说sqlite数据库只有5种类型: NULL,INTEGER,REAL,TEXT,BLOB(如何输入就如何存储)

xiangxw ⋅ 2011/03/27 ⋅ 0

CakePHP 3.3.4 发布,PHP 开发框架

CakePHP 3.3.4 发布了。 CakePHP是一个运用了诸如ActiveRecord、Association Data Mapping、Front Controller和MVC等著名设计模式的快速开发框架。该项目主要目标是提供一个可以让各种层次的...

达尔文 ⋅ 2016/09/26 ⋅ 2

oracle jdbc DECIMAL and NUMERIC

8.3.11 DECIMAL and NUMERIC The JDBC types DECIMAL and NUMERIC are very similar. They both represent fixed-precision decimal values. ame="1007716"> The corresponding SQL types DE......

Oscarfff ⋅ 2016/09/29 ⋅ 0

DOUBLE vs DECIMAL 区别

对于财务计算,最好使用DECIMAL类型 The example from MySQL documentation http://dev.mysql.com/doc/refman/5.1/en/problems-with-float.html (i shrink it, documentation for this sect......

月下独酌100 ⋅ 2016/05/05 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

6.1 压缩打包介绍 6.2 gzip压缩工具 6.3 bzip2压缩工具 6.4 xz压缩工具

压缩打包介绍 使用压缩工具的好处: 使用压缩文件,不仅可以节省磁盘空间,而且在传输时还能节省网络宽带。 我们通常讲的家用宽带和机房宽带100M是有区别的: 机房宽带的上行和下行都是100M,...

Linux_老吴 ⋅ 27分钟前 ⋅ 0

SpringBoot热部署加持

概述 进行SpringBoot的Web开发过程中,我们很多时候经常需要重启Web服务器才能保证修改的 源代码文件、或者一些诸如xml的配置文件、以及一些静态文件生效,这样耗时又低效。所谓的热部署指的...

CodeSheep ⋅ 33分钟前 ⋅ 0

OSChina 周六乱弹 —— 假如你被熊困到树上

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @小小编辑:推荐歌曲《如果写不出好的和弦就该在洒满阳光的钢琴前一起吃布丁》 《如果写不出好的和弦就该在洒满阳光的钢琴前一起吃布丁》- 谢...

小小编辑 ⋅ 今天 ⋅ 5

vbs 取文件大小 字节

dim namedim fs, s'name = Inputbox("姓名")'msgbox(name)set fs = wscript.createobject("scripting.filesystemobject") 'fs为FSO实例if (fs.folderexists("c:\temp"))......

vga ⋅ 今天 ⋅ 1

高并发之Nginx的限流

首先Nginx的版本号有要求,最低为1.11.5 如果低于这个版本,在Nginx的配置中 upstream web_app { server 到达Ip1:端口 max_conns=10; server 到达Ip2:端口 max_conns=10; } server { listen ...

算法之名 ⋅ 今天 ⋅ 0

Spring | IOC AOP 注解 简单使用

写在前面的话 很久没更新笔记了,有人会抱怨:小冯啊,你是不是在偷懒啊,没有学习了。老哥,真的冤枉:我觉得我自己很菜,还在努力学习呢,正在学习Vue.js做管理系统呢。即便这样,我还是不...

Wenyi_Feng ⋅ 今天 ⋅ 0

博客迁移到 https://www.jianshu.com/u/aa501451a235

博客迁移到 https://www.jianshu.com/u/aa501451a235 本博客不再更新

为为02 ⋅ 今天 ⋅ 0

win10怎么彻底关闭自动更新

win10自带的更新每天都很多,每一次下载都要占用大量网络,而且安装要等得时间也蛮久的。 工具/原料 Win10 方法/步骤 单击左下角开始菜单点击设置图标进入设置界面 在设置窗口中输入“服务”...

阿K1225 ⋅ 今天 ⋅ 0

Elasticsearch 6.3.0 SQL功能使用案例分享

The best elasticsearch highlevel java rest api-----bboss Elasticsearch 6.3.0 官方新推出的SQL检索插件非常不错,本文一个实际案例来介绍其使用方法。 1.代码中的sql检索 @Testpu...

bboss ⋅ 今天 ⋅ 0

informix数据库在linux中的安装以及用java/c/c++访问

一、安装前准备 安装JDK(略) 到IBM官网上下载informix软件:iif.12.10.FC9DE.linux-x86_64.tar放在某个大家都可以访问的目录比如:/mypkg,并解压到该目录下。 我也放到了百度云和天翼云上...

wangxuwei ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部