u011461064
noMathNoPain
采纳率78.3%
2015-07-14 17:21 阅读 2.0k
已采纳

Hibernate hql关联查询问题

50

有2张表 discuss和post post的主键postid作为外键在discuss中 discuuss与post多对一的关系

对应2个实体类Discuss和Post Discuss中 用Posts post 并在xml中做了关系映射
现在我想根据指定的Postid来找到响应的discuss记录 然后不知道该怎么写了
1.from Discuss as dis where dis.post.postid=?
2.select dis from Discuss as dis inner join dis.post as pos with pos.postid=?
网上查资料第一种好像不正确 但不知道为什么不能这么用
第二种不知道正不正确 总感觉有问题 牵扯到hibernate的关系映射就迷迷糊糊的 望大神指点

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

7条回答 默认 最新

  • 已采纳
    hpp201220180206 hpp201220180206 2015-07-15 00:40

    你可以通过第一种查询查到相应的discuss,如果你没有关闭延时加载,你取不出post的数据,在你需要用post的数据的时候还要再用discuss里面的postid到pos表里面再查询一次。
    如果你关闭了延时加载则不需要

    点赞 评论 复制链接分享
  • u011461064 noMathNoPain 2015-07-14 18:14

    还有我在书上看到的许多示例中 配置关系映射后都没写 直接是 "from Discuss dis inner join dis.post pos "sql中 join连接不都要写on条件吗
    这里是不是默认了 idscuss.postid=post.postid作为连接条件的

    点赞 评论 复制链接分享
  • caozhy 从今以后生命中的每一秒都属于我爱的人 2015-07-14 21:45
  • u012216727 大河行脚 2015-07-14 23:57
  • hpp201220180206 hpp201220180206 2015-07-15 00:16

    第一个是没有问题的,但是想要立即取出post数据就必须关闭延时加载,如果不关延时加载的话就要两次查询了

    点赞 评论 复制链接分享
  • strutce 丵鹰 2015-07-15 00:41

    1.from Discuss as dis where dis.post.postid=?这个?你传进来的postid值,指定你获取那些数据
    2.select dis from Discuss as dis inner join dis.post as pos with pos.postid=?这里应把with pos.postid=? 改成on pos.postid=dis.postid

    点赞 评论 复制链接分享
  • xiesq5112 心随自在飞 2015-07-23 08:09

    select dis from Discuss as dis inner join dis.post as pos on pos.postid=dis.postid where dis.postid=?

    点赞 评论 复制链接分享

相关推荐