很久没有积累东西了,碰巧前几天遇到一个的问题,虽然不大但是比较有意思,在这里稍微记录一下,以后可以作为面试题之类的考验其他人,想想也远比那些被我们诟病的题目要实际的多:
有表结构如下:
T_SOME_TABLE{
crowid varchar(36);
zrmb float(7,3);
zjdw float(7,3);
}
问以下两段代码,哪段会出现错误,为什么?
---------------------------------------代码片段1:--------------------------------------
后台代码如下:
String hqlStr="select SUM(t.zrmb) AS SUM_1,SUM(t.zjdw) AS SUM_2 from T_SOME_TABLE t where 1=1 ";
List sumList=baseDao.find(hqlStr);//hibernate实现查询HQL汇总语句返回结果List
request.setAttribute("sumList",sumList);
前台代码如下:
String sum1="";
String sum2="";
ArrayList sumList=request.getAttribute("sumList")==null?null:(ArrayList)request.getAttribute("sumList");
if(null!=sumList){
for(int i=0;i<sumList.size();i++){
Object[] tempObj=(Object[])sumList.get(i);
sum1=tempObj[0]==null?"0.0":tempObj[0].toString();
sum2=tempObj[1]==null?"0.0":tempObj[1].toString();
}
}
out.prinln("sum1:"+sum1);
out.prinln("sum2:"+sum2);
---------------------------------------代码片段2:--------------------------------------
后台代码如下:
String hqlStr="select SUM(t.zrmb) AS SUM_1 from T_SOME_TABLE t where 1=1 ";
List sumList=baseDao.find(hqlStr);//hibernate实现查询HQL汇总语句返回结果List
request.setAttribute("sumList",sumList);
前台代码如下:
String sum1="";
ArrayList sumList=request.getAttribute("sumList")==null?null:(ArrayList)request.getAttribute("sumList");
if(null!=sumList){
for(int i=0;i<sumList.size();i++){
Object[] tempObj=(Object[])sumList.get(i);
sum1=tempObj[0]==null?"0.0":tempObj[0].toString();
}
}
out.prinln("sum1:"+sum1);
实际运行会发现 代码片段2会出现错误 而代码片段1是正常可以运行的,这里是在功能开发过程中 片段2是在片段1的基础上惯性思维去实现的,而实际运行却会发现 结果并不是想要的那样,这个动手能力强的人可以实际调试一下就会很快明白里面的所以然。这里简单说一下:
做过hibernate的人都知道 用hibernate调用sql查询出的汇总语句,返回的结果是封装成Object的保存到List中的,而代码1和代码2相比较,差别只是在字段的多少上,如果是2个以上的字段 结果是封装成Object[]数组的,这个无可争议,但是如果是一个字段的话List里保存的是Object,而不是Object[]数组。
这样就可以推论这里hibernate内部是做了处理的。
代码2循环中应该是:
Object tempObj=(Object)sumList.get(i);
sum1=tempObj==null?"0.0":tempObj.toString();
分享到:
相关推荐
- 解决方案唯一惯性思维:认为一个问题只有一个最佳答案。 - 多物质惯性思维:对多种物质组合的忽视。 - 物质价值惯性思维:过度重视某些物质的价值。 - 传统应用条件惯性思维:遵循传统的应用流程。 - 类似...
联想之后,需要运用逻辑推理来对这些假设进行推断和验证,最终得到一个可靠的结论。 在文件中还提到了思维的四个含义:偶然的和随便的想法、对非直接接触到的事物的想法、基于非直接感受事物的信念以及通过认真调研...
- **单元测试**:单元测试工作量大,存在思维惯性问题,覆盖率低,同样存在开发人员积极性不足的问题。 - **培训**:通过个人软件过程(Personal Software Process, PSP)等培训方法提高开发人员的能力,降低缺陷率...
例如,当问题A再次出现但情境已经改变时,我们需要警惕思维定势可能导致的错误决策。 创新思维的培养要求我们保持开放的心态,勇于质疑现状,接受并尝试不同的思路。它不仅适用于科技领域的创新,同样适用于管理、...
定势思维、惯性思维、线性思维和偏见思维是几个典型的障碍。定势思维是指人们习惯于根据以往的经验和模式来处理问题,这往往会导致他们忽视新情况下的需求和可能性。例如,在五金店中,聋哑人买钉子的故事启示我们,...
7. 认知过程:对人类自身的认知过程,特别是对所谓的“黑箱”现象的研究,是人类探索自我的一个重要方面。尽管我们无法完全了解“黑箱”的运作机制,但对它的认识有助于我们理解人类的行为和心理。 8. 思维体系:...
【创新思维与技法的开发和...通过案例分析、故事讲述、游戏互动和实际操作,该课程旨在创建一个积极的创新氛围,鼓励参与者打破常规,挖掘潜在的创新机会,并在日常工作中运用创新思维和技法,以推动企业和个人的发展。
1. 牛顿第一定律:也被称为惯性定律,由牛顿提出,指出在没有受到外力作用时,物体将保持其原来的状态,即静止的物体将保持静止,匀速直线运动的物体将继续以相同的速度沿直线运动。这个定律不能直接通过实验得出,...
总的来说,惯性概念的形成和发展是物理学历史上的一个关键历程,它反映了人类对自然界规律的理解逐步深化的过程。从亚里士多德的朴素观念,到开普勒、伽利略、笛卡儿的贡献,再到牛顿的系统阐述,惯性概念的发展展示...
思维定势是人们在解决问题时,习惯性依赖权威观点、从众心理、过往经验或书本知识所形成的一种惯性思维模式。它可能会阻碍我们的创新思维,使我们在面对问题时难以跳出传统的框架。例如,面对权威观点时,我们可能会...
当分配失败时系统函数会返回一个0值,这时返回值“0”已不表示新启用的光标,而是系统向应用程序发出的一个通知,告知出现了错误。作为应用程序,在每一次申请内存后都应该检查返回值是否为0,如果是,则意味着出现...
第一个推销员受限于传统思维,认为市场不存在;第二个推销员则看到了潜在的巨大市场。这表明创新思维需要打破常规,敢于挑战既定的认知。 2. **愚蠢的断言** - 历史上的这些例子强调了传统观念和偏见如何阻碍创新。...
综上所述,创新思维是一个复杂而深入的思维过程,它涉及对问题本质的深刻洞察,要求个体在社会环境中不断创新,并以逻辑推理为基础,运用多种创新技法,实现知识的整合与创造。在这一过程中,个体需要不断培养和提升...
总之,惯性力是物理学中一个重要的概念,它揭示了物体在非惯性参考系中的运动规律,并在很多实际问题中起到关键作用。深入理解和掌握惯性力,不仅有助于解决物理竞赛中的问题,更能培养科学思维,提升个人对世界的...
惯性思维设计导致的Zigbee通信能力差问题 总结:在设计Zigbee通信模块原理图和PCB时,因惯性思维导致了升版,付出了沉重的代价。本文总结了设计过程中遇到的问题和教训,强调了在设计中要认真对待每个电路的应用,...
第一个推销员因固守传统观念,认为无人穿鞋的岛屿没有市场,而第二个推销员则看到了巨大的商机。这表明创新思维是敢于突破现状,寻找新的可能性。 2. 愚蠢的断言案例展示了传统思维可能带来的错误判断。如个人电脑...
案例分享中的岛屿故事揭示了一个核心观点:创新思维意味着敢于挑战现状,不被既有的认知框架所束缚。第一个推销员受限于传统的市场观念,而第二个推销员则看到了新的机遇。这表明,创新思维不仅需要观察力,更需要...
- **案例1**:在二战后的建筑热潮中,这位青年通过深度思考,发现招聘广告本身就是一个机会,他可能提出了培训砖瓦工的新方案,从而赚取了财富。 - **案例2**:跳蚤变为“爬蚤”的实验揭示了适应性和思维局限性。...
9. 客车启动向左,氦气球受到向右的惯性力,会相对座椅向右移动,而小球因悬挂会向左移动,故最可能出现的位置是A。 10. 打印纸厚度5.00单位未知,如果是um,则每张纸约50um,质量约2.5kg,密度可能小于水,对桌面...