今天早上定义了一个字段类型为tinyint(1),因为这个字段的值只有0到3,4种情况,本意是减少数据库的存储,所以tinyint大小足够了。tinyint默认可存-127~127范围的数字(有符号)。
当时采用tinyint(1),其实tinyint(2)之类的也是可以的,后面的数字是限制显示长度。当实际长度超出这个值时,也不会影响存储(如果有配置zerofill,那么不足的部分会左边补0)。没有超出的话,就没什么用。
当我用hibernate的方式从库里取出这个字段值的时候。发现怎么取都只是0或者1。可是库里的值已经是其他值了。所以很郁闷。我把tinyint(1)改为tiny(2)后,能正常取值了。想来这个字段类型应该是被hibernate特殊处理了。查下资料,应该是被处理成boolean了,所以只能取到0和1。下次遇到,如果不是是否什么的字段,还是改用大点的值才行。

本文讲述了在使用tinyint(1)字段类型时遇到的问题,特别是在与Hibernate框架交互时,该字段被错误地映射为布尔类型,导致只能取到0和1两个值。通过将tinyint(1)更改为tinyint(2),解决了这一问题。
743

被折叠的 条评论
为什么被折叠?



