有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的关系映射就迷迷糊糊的 望大神指点
你可以通过第一种查询查到相应的discuss,如果你没有关闭延时加载,你取不出post的数据,在你需要用post的数据的时候还要再用discuss里面的postid到pos表里面再查询一次。
如果你关闭了延时加载则不需要
还有我在书上看到的许多示例中 配置关系映射后都没写 直接是 "from Discuss dis inner join dis.post pos "sql中 join连接不都要写on条件吗
这里是不是默认了 idscuss.postid=post.postid作为连接条件的
http://www.cnblogs.com/cyjch/archive/2012/03/14/2395340.html
http://www.360doc.com/content/14/0615/21/8072791_386894759.shtml
第一个是没有问题的,但是想要立即取出post数据就必须关闭延时加载,如果不关延时加载的话就要两次查询了
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
select dis from Discuss as dis inner join dis.post as pos on pos.postid=dis.postid where dis.postid=?