noMathNoPain
2015-07-14 17:21
采纳率: 78.3%
浏览 2.0k
已采纳

Hibernate hql关联查询问题

有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 2015-07-15 00:40
    已采纳

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

    点赞 评论
  • noMathNoPain 2015-07-14 18:14

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

    点赞 评论
  • blownewbee 2015-07-14 21:45
    点赞 评论
  • 大河行脚 2015-07-14 23:57
    点赞 评论
  • hpp201220180206 2015-07-15 00:16

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

    点赞 评论
  • 丵鹰 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

    点赞 评论
  • 心随自在飞 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=?

    点赞 评论

相关推荐 更多相似问题