关于hibernate执行createSQLQuery时字段重名的问题
2013-09-28 21:38
387 查看
海阔凭鱼跃,天高任鸟飞!
关于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时字段重名的问题
前些天做了一个小项目,主要做日志评估这块,由于各种的查询用于计算过于复杂,某些查询用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执行sql查询,字符字段类型只返回第一个字节的问题
- hibernate查询某一个对象后,执行createSQLQuery查询出现的问题
- 使用Hibernate 5.0、4.0、3.0 createSQLQuery执行原生Sql语句 遇到问题及解决办法集锦
- hibernate查询某一个对象后,执行createSQLQuery查询出现的问题
- hibernate查询某一个对象后,执行createSQLQuery查询出现的问题
- 关于hibernate的session.createSQLQuery(sql)直接调用底层SQL后,返回结果集的问题
- Hibernate使用二级缓存时,createSQLQuery需要注意的问题
- 【Hibernate】关于hibernate中使用createSQLQuery后返回的结果处理
- 关于No Dialect mapping for JDBC type :-9 hibernate执行原生sql语句问题
- 关于hibernate执行sql语句后,进程不关闭的问题
- Hibernate使用二级缓存时,createSQLQuery需要注意的问题
- 关于No Dialect mapping for JDBC type :-9 hibernate执行原生sql语句问题 .
- Hibernate使用二级缓存时,createSQLQuery需要注意的问题
- Hibernate SQL查询时有重名字段出现的问题
- 使用hibernate3的createSQLQuery遇到的问题
- Hibernate使用二级缓存时,createSQLQuery需要注意的问题
- 关于hibernate的 createSqlQuery
- Hibernate使用二级缓存时,createSQLQuery需要注意的问题
- 关于No Dialect mapping for JDBC type :-9 hibernate执行原生sql语句问题
- Hibernate 问题,在执行Query session.createQuery(hql) 报错误直接跳到finally