今天碰到一个很奇怪的问题 用sql 在 数据库中查询出来的数据  和用hibernate 的 createSqlQuery(sql) 查询出来的数据竟然不一样    
sql 如下  :  涉及到 用户表 主题表 和回复表  三张表有相应的关联关系  主要想查询  主题id  主题标题 主题的回帖数  主题作者  最后发表人 最后发表时间 这六个  其中最后发表人 和时间 用到了 子查询 select topic_id,topic_title ,count(reply_of_topic) ,FORUSER_NAME ,(select top 1 reply_time from wochengz.Tb_FORUMREPLY where reply_of_topic=topic_id order by convert(datetime,reply_time) desc) ," +
"(select top 1 FORUSER_NAME from wochengz.Tb_FORUMREPLY inner join wochengz.Tb_FORUMUSER on "+
"reply_owner=FORUMUSER_ID where reply_of_topic=topic_id order by convert(datetime,reply_time) desc) "+
" from wochengz.tb_topic inner join wochengz.Tb_FORUMREPLY  on topic_id=reply_of_topic inner join wochengz.Tb_FORUMUSER "+
" on topic_owner=FORUMUSER_ID group by reply_of_topic,topic_title,FORUSER_NAME,topic_idcreateSqlQuery(sql)和 数据库中查询的sql 绝对一样  sql中查询数据没问题 后来createSqlQuery(sql)查询出来后   那个最后发表人 和 最后发表时间 没有了  换成了相应的 主题的回帖者的 数量  和 回帖时间的 统计个数   比如说 主题有四个回复 所以最后那两个都成了 4我不知道为啥出现这个 让人纳闷的结果  难道是用了 子查询的缘故 还是什么的
dao的 
createSqlQuery(sql)代码 List list=getSession().createSQLQuery(sql).list();
这问题 还真纳闷呢 大家帮我解决看  感激不尽了 

解决方案 »

  1.   

    表多了sql语句是非常头疼.! 
    LZ把hibernate输出的sql与你自己写的sql对比下就知道了啊
      

  2.   

    都是同样的SQL ,肯定的有区别的 不然不会不同的 仔细看~~
    写HQL语句是很郁闷的,大批量的查询我不建议你用HQL
      

  3.   

    额不知道说什么了  把控制台输出的sql  复制进 数据库查询  结果 就硬是不一样    没碰到过这种奇怪的问题   我怀疑可能与那两个括号中的 子查询有关
      

  4.   


    select topic_id,topic_title ,count(reply_of_topic) reply_num ,FORUSER_NAME ,(select top 1 reply_time from wochengz.Tb_FORUMREPLY where reply_of_topic=topic_id order by convert(datetime,reply_time) desc) reply_time," +
    "(select top 1 FORUSER_NAME from wochengz.Tb_FORUMREPLY inner join wochengz.Tb_FORUMUSER on "+
    "reply_owner=FORUMUSER_ID where reply_of_topic=topic_id order by convert(datetime,reply_time) desc) reply_user"+
    " from wochengz.tb_topic inner join wochengz.Tb_FORUMREPLY on topic_id=reply_of_topic inner join wochengz.Tb_FORUMUSER "+
    " on topic_owner=FORUMUSER_ID group by reply_of_topic,topic_title,FORUSER_NAME,topic_idList list=getSession().createSQLQuery(sql)
    .addScalar("topic_id", Hibernate.STRING)
    .addScalar("topic_title", Hibernate.STRING)
    .addScalar("reply_num", Hibernate.INTEGER)
    .addScalar("foruser_name", Hibernate.STRING)
    .addScalar("reply_time", Hibernate.STRING)
    .addScalar("reply_user", Hibernate.STRING)
    .list();
      

  5.   

    奇怪,sql语句一样,怎么可能查出来的数据不一样
      

  6.   

    奇怪,sql语句一样,怎么可能查出来的数据不一样,是不是你连错数据库了