关于hibernate执行createSQLQuery时字段重名的问题
来源:互联网 发布:c语言中的函数是什么 编辑:程序博客网 时间:2024/05/16 00:30
海阔凭鱼跃,天高任鸟飞!
关于hibernate执行createSQLQuery时字段重名的问题
前些天做了一个小项目,主要做日志评估这块,由于各种的查询用于计算过于复杂,某些查询用hql很难实现,因此用了hibernate自带的createSQLQuery方法。前几天忙于编码,也没做测试,昨天找了些数据,做些调试,还算ok,无意中看到某些字段的值竟然是一样的,然后就各种的调试,从数据库中取到的元素值竟然是一样的,然后便尝试用原始的SQL语句进行查询,结果是SQL查询正确,hibernate取值错误,郁闷之极啊!怎么办?凉拌呗!从网上找各种资料,尝试了N种方法,无果而终!
大家的解决方案无非以下几种:
1.改成hql语句(这个首先否定,因为关联的表太多,用到的函数也很多)
2.用addEntity加以区分(这个试了几次,很繁琐,无果而终)
3.执行jdbc(最后的招了,改很容易,但是应该还有更容易的解决方案吧)
哥们用第二种方案调了一晚上,又累有头晕,果断放弃。究其原因:几个表里的字段有相同的值,hibernate取值设值用的是get,set方法,如果有相同的字段,它区分不了。
其他方法都不行,怎么办?还是最后一招吧。改成jdbc后,RowSet返回值后,竟然也是同样的问题。Oh,My God!
哥们当时就崩溃了,你妈的后招被封死了。由于没有可参考的实例,哥们突发奇想,用子查询把重名的字段as一下,然后调了一下,通过,OK!
总结:
1.hibernate执行sql原理,字段的set、get.
2.重名字段的解决方案,子查询把重名的替换掉
3.数据库设计的时候最好不要重名,要充分地考虑实现
4.某些问题的解决,还是从原理上入手,网络不是万能的,得有自己的思想
5.重视细节
- 关于hibernate执行createSQLQuery时字段重名的问题
- 关于Hibernate的createSQLQuery问题
- 关于hibernate的 createSqlQuery
- 关于hibernate的 createSqlQuery
- Hibernate SQL查询时有重名字段出现的问题
- Hibernate使用二级缓存时,createSQLQuery需要注意的问题
- 关于hibernate中的createSQLQuery的用法
- Hibernate的createSQLQuery查询的问题
- Hibernate的createSQLQuery查询的问题
- hibernate查询某一个对象后,执行createSQLQuery查询出现的问题
- Hibernate的createSQLQuery 查询数据库类型为char的字段时要注意
- Hibernate的createSQLQuery 查询数据库类型为char的字段时要注意
- Hibernate 使用createSQLQuery查询时,缓存问题
- 关于用Hibernate执行sql查询,字符字段类型只返回第一个字节的问题
- Hibernate的createSQLQuery查询
- hibernate的createSQLQuery
- 关于删除允许重名项的问题
- 关于重名文件重命名的问题
- AES加密有效
- 设计模式 - 抽象工厂模式
- uva 350 Pseudo-Random Numbers
- cocos2d-x 回调函数
- 给一个数组[a1,a2,a3....an],要求出令ai-aj有最大值,其中i<=j,时间和空间复杂度尽可能小
- 关于hibernate执行createSQLQuery时字段重名的问题
- 十月严打淫惠色情网,色情内容
- 继承关系中,子类父类的初始化顺序
- 中文编码问题
- ural 1297 Palindrome 后缀数组
- java精确的加减乘除
- 深入浅出二叉树的遍历
- 查找大于一正整数的最小的不重复数
- ADF中使用CreateWithParams给新行中的字段指定默认值