首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

关于hibernate 的左外联接

2012-08-28 
关于hibernate 的左外连接我有表1 user 表2 userinfouser表中有3行数据 userinfo 有2行数据 关联外键了Str

关于hibernate 的左外连接
我有表1 user 表2 userinfo 
user表中有3行数据 userinfo 有2行数据 关联外键了

String hql="select u from TUserinfo as ui left join ui.TUser as u "; 

为什么只能查到两表都有的数据,
而user表中 未关联的一行数据查不到,

是否是我配置文件有错?

<many-to-one name="TUser" class="com.xhce.pojo.TUser" fetch="join" lazy="false" >
  <column name="userId" unique="true" />
  </many-to-one>


<set name="TUserinfos" inverse="true" lazy="false" cascade="all" outer-join="true">
  <key>
  <column name="userId" unique="true"/>
  </key>
  <one-to-many class="com.xhce.pojo.TUserinfo" />
  </set>
 

[解决办法]
left join 
左关联。顾名思义就是显示左边中的所有记录,当右表中的记录对应不到左表是,则不显示。
[解决办法]
String hql="select u from TUser as u left join u.TUserinfos"; 
应该是这样吧, TUser 为左表
[解决办法]
String hql="select u from TUserinfo as ui left join ui.TUser as u ";

改为 
String hql="select u from TUserinfo as ui right join ui.TUser as u ";
[解决办法]
left join以左边的表为主,也就是你的TUserinfo表,里面的数据将会全部查出
右面的表TUser,为空的数据不会显示

热点排行