问题收集与解决01

今天在查一个bug的时候,发现一个发现要查询的语句查询到不符合的数据。

@QueryHints({ @QueryHint(name = "org.hibernate.cacheable", value = "true") })
@Query("select o from TerminalSoftware o where o.code=:code and :osVersion >= o.osMinimumVersion and o.status =2 order by o.releaseTime desc")
Page<TerminalSoftware> findLatestVersionByPlatformResolutionOsVersion(@Param("code")String code, @Param("osVersion")String osVersion,Pageable pageable);

在这里查询应该排除掉那版本高于Version的数据

在测试多次后发现总是能取到该值。

于是我在用sql语句来模拟一下:

这段语句是想搜出CODE为IOS001,STATUS为2,最低版本(OS_MINIMUM_VERSION)不能超过8.4的数据

这样能把多于的一条数据查询到。

换一种写法:

果然,这样的话就无法搜索的到不想要的数据

,问题解决,皆大欢喜!!!

但是到了代码里面,有Hibernate封装的sql语句的时候

把OSVersion换成int,double,long,float等类型都会报同一个错误:

<Parameter value [8] did not match expected type [java.lang.String (n/a)]; nested exception is java.lang.IllegalArgumentException: Parameter value [8] did not match expected type [java.lang.String (n/a)]>

简单翻译一下就是【

<参数值[ 8 ]不符合预期的类型[ java.lang.string(N / A)];嵌套异常java.lang.illegalargumentexception:参数值[ 8 ]不符合预期的类型[ java.lang.string(N / A)] >

原来,在该bean里面已经定义了String类型了,如果想要改掉这个类型,必须要改数据库等很多地方,这个不现实。

那现在只能修改sql语句,

百度了一下,mysql里面如何用sql语句让字符串的‘123’转换为数字的123?

找到这三种方法:

方法一:SELECT CAST(‘123‘ AS SIGNED);

方法二:SELECT CONVERT(‘123‘,SIGNED);

方法三:SELECT ‘123‘+0;

最后实践发现只有第二种方法能够用,第一种方法:tomcat无法启动,第三种的话,相当于该成int型

用了第二种方法后,发现只能获取到数字8,而无法获取小数点后的数字。

于是我百度了一下CONVERT,最后发现了要用DECIMAL,才能获取到float类型

CONVERT(“8.4”,DECIMAL )

但是这样还会只能获取到“8”,于是只能再寻找其他方法。

在经历多次失败后,发现还是上面那种方法最好。

最后,在一个问题中发现了CONVERT(“8.4”,DECIMAL )奥秘

原来DECIMAL后面可以加数字,变成:

SELECT CONVERT(‘119.44‘,DECIMAL(3,1) )

DECIMAL(3,1)

3:表示定点精度,说白了就是总共保留多少个字数,

1:表示保留小数点后几位。

SELECT CONVERT(‘19.44‘,DECIMAL(3,1)

当数字为19.44时,获取的数字只会保留小数后一位

当数字为119.44时,保留一位小数点,应该为119.4

但是因为定点精度为3,所以不能取这么大的值,最后获得的数字为99.9

最后,就以这样的结果结束了bug的查询!!23333

时间: 2024-07-29 22:53:55

问题收集与解决01的相关文章

IE6/7常见问题 收集及解决(一)

1.IE6下,快元素有浮动,和横向的margin,横向的margin值会被放大成两倍 解决:将快元素display设置为 inline: 2.IE6,7下几px的间隙问题    在IE6,7下li本身没有浮动,但内容浮动就会多出几px间隙    解决:(1)li加上浮动        (2)给li加vertical-align加top/bottom等    //垂直对齐方式 3.IE6,7最小高度问题:    解决:(1)font-size:0    //清除IE6最小高度为19px,但是fon

IE6/7常见问题 收集及解决(二)

1.float的div闭合;清除浮动;自适应高度; ① 例如:<#div id=”floatA” ><#div id=”floatB” ><#div id=” NOTfloatC” >这里的NOTfloatC并不希望继续平移,而是希望往下排. (其中floatA.floatB的属性已经设置为 float:left;)    这段代码在IE中毫无问题,问题出在FF.原因是NOTfloatC并非float标签,必须将float标签闭合. 在 <#div class=”

用优先队列式分支限界法解决0-1背包问题

用优先队列式分支限界法解决0-1背包问题的算法思想: 1.分支限界法常以广度优先或最小耗费优先(最大效益优先)方式搜索问题的解空间树, 对于0-1背包问题的解空间树是一个颗子集树. 2.在分支限界法中有一个活结点表,活结点表中的每个活结点只有一次机会成为扩展结点,一旦成为  扩展结点就一次性产生所有儿子结点,在这些儿子结点中,导致不可行解或导致非最优解的儿子 结点被舍弃,其余儿子结点被加入到活结点表中.对于0-1背包问题中的每个活结点只有两个儿子 结点,分别表示对物品i的选取和对物品i的舍去:在

遗传算法解决0-1背包问题

1 import numpy 2 import matplotlib.pyplot as plt 3 4 5 data = numpy.array([[77, 92], 6 [22, 22], 7 [29, 87], 8 [50, 46], 9 [99, 90]]) 10 11 12 class GA(object): 13 """ 14 遗传算法解决0-1背包问题 15 """ 16 17 def __init__(self, length,

GlusterFS + lagstash + elasticsearch + kibana 3 + redis日志收集存储系统部署 01

因公司数据安全和分析的需要,故调研了一下 GlusterFS + lagstash + elasticsearch + kibana 3 + redis 整合在一起的日志管理应用: 安装,配置过程,使用情况等续 一,glusterfs分布式文件系统部署: 说明: 公司想做网站业务日志及系统日志统一收集和管理,经过对mfs, fastdfs 等分布式文件系统的调研,最后选择了 glusterfs,因为Gluster具有高扩展性.高性能.高可用性.可横向扩展的弹性特点,无元数据服务器设计使glust

django项目部署后静态文件收集【解决admin后台静态文件丢失】

在部署完Django项目后,进行admin后台登录发现样式丢失,后台日志显示:js和css文件丢失 解决办法: 配置settings.py如下: #DEBUG打开时,app的静态文件默认从这里读取 STATIC_URL = '/static/' #静态文件根目录,当关闭DEBUG的时候admin从STATIC_ROOT获取静态文件,同时需要配置url STATIC_ROOT = ("f:/py_workspace/DJ/proj/people/static/") #Django部署在A

动态规划解决0-1背包问题

这几天算法老师布置了一个作业是关于背包问题的,在这里记录一下解决的过程: 一:背包问题的描述 有n1,n2,n3....个物品,每个物品的重量为w1,w2,w3.....,每个物品的价值为v1,v2,v3....,现在有一个承重量为C的背包,求出要怎样放物品才能使的装入背包的物品价值总和最大.由于每个物品只有一个,并且只能选择放或不放,因此用0表示物体没有放进背包中,1表示物体放进背包中 二:分析过程(以具体的例题来分析) 题目描述: 现有一个可以承重为6的背包bag,以及3个物品,它们的重量分

kali之中文乱码解决01

无法定位软件包?????????????????????????????????????? ???? 1111111.在/etc/apt/sources.list 文件中更新配置源文件 修改   按i 添加      之后按esc   再输入:  qw    保存退出 2222222.vmware出现无法定位Linux-headers: apt-cache search linux-headers 33333333.配置完成后输入 apt-get update apt-get install t

[正则表达式] PHP 中使用正则表达式收集(2016/01/08 - )

// 1. 过滤字符串中src 属性为空的img 标签 $filterBack = preg_replace("/<img[^<>]*src\=[\'\"][\'\"][^<>]*>/" , "" , $str); // ....