关于hibernate与左链接问题

blackwingzhong 2008-12-09 11:52:24
我有一个地区表tb_region,有int id,varchar region_name两个字段:
create table tb_region(
id int,
s_region_name varchar(30),
i_upper_region_id int
)

想做一个tb_region表的自身链接,在mysql数据库中,语句是可以执行成功的:
select a.s_region_name ,b.s_region_name ,a.id ,b.id from tb_region a left join tb_region b on a.id=b.i_upper_region_id
where a.i_upper_region_id=0;


但是,在转换成相应的HQL语句后,就会出错(tb_region表的hbm.xml文件中,没有配置自身链接关系,one to many...)。本来想改用SQLQuery进行native sql查询,但是也出错。

不知道如果要实现自身表的左连接,直接用native sql进行查询的话,需要怎么做?
...全文
41 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
tiger868686 2008-12-09
  • 打赏
  • 举报
回复
public List findByHqlWithLeftJoin(){
String sqlstr = "select a.s_region_name ,b.s_region_name ,a.id ,b.id from tb_region a
left join tb_region b on a.id=b.i_upper_region_id where
a.i_upper_region_id=0";
SQLQuery query = this.getSession().createSQLQuery(sqlstr);
query.addScalar("s_region_name", Hibernate.String);
query.addScalar("s_region_name", Hibernate.STRING);
........//以下类似,指明字段 和类型


return (ArrayList)query.list();
}
试试看
blackwingzhong 2008-12-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 changronghuchaohi 的回复:]
public List findByHqlWithLeftJoin(){
String sqlstr = "select a.s_region_name ,b.s_region_name ,a.id ,b.id from tb_region a
left join tb_region b on a.id=b.i_upper_region_id where
a.i_upper_region_id=0";
SQLQuery query = this.getSession().createSQLQuery(sqlstr);
query.addScalar("s_region_name", Hibernate.String);
query.a…
[/Quote]

原来addScalar()方法的参数是s_region_name,终于搞定。thx

谢谢两位热心回答
Landor2004 2008-12-09
  • 打赏
  • 举报
回复
用hql需要配置one-to-many的

或者可以用createSQLQuery来直接调用sql

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧