我有三个表:
u_user(u_user_id,name)(用户表)
u_teacher(u_teacher_id,name,u_user_id)(老师表与用户表是一对一)
c_button(c_button_id,name,u_user_id)(栏目表)
每个栏目表中的栏目有u_user_id 可为空的外键;
我如何用hibernate 的hql查询:当c_button.u_user_id不为空时
u_teacher.name?
我写的是:select b.Name,t.Name from CButton as b left outer join UTeacher as t where t.UUser.Id = b.UUser.Id
我也写过:select b.Name,t.Name from CButton as b left outer join UUser u,UTeacher as t where t.UUser.Id =u.Id and u.Id = b.UUser.Id
但都是报错为: Path expected for join!
Invalid path: ’t.Name’
Invalid path: ’t.UUser.Id’
当我把“where”改成“on”是就会报出:unexpected token: on
但当我写sql: select b.name,u.name
from c_button b left outer join u_teacher u
on u.u_user_id=b.u_user_id
在PL/SQL上运行就没问题
当我先查了出CButton.Name和CButton.UUserId.Id 再根据CButton.UUserId.Id 去查UTeacher.Name 结果也正常,但是查询的次数大多了,我想用一条hql就查出来
请问高手门要怎么写?????
u_user(u_user_id,name)(用户表)
u_teacher(u_teacher_id,name,u_user_id)(老师表与用户表是一对一)
c_button(c_button_id,name,u_user_id)(栏目表)
每个栏目表中的栏目有u_user_id 可为空的外键;
我如何用hibernate 的hql查询:当c_button.u_user_id不为空时
u_teacher.name?
我写的是:select b.Name,t.Name from CButton as b left outer join UTeacher as t where t.UUser.Id = b.UUser.Id
我也写过:select b.Name,t.Name from CButton as b left outer join UUser u,UTeacher as t where t.UUser.Id =u.Id and u.Id = b.UUser.Id
但都是报错为: Path expected for join!
Invalid path: ’t.Name’
Invalid path: ’t.UUser.Id’
当我把“where”改成“on”是就会报出:unexpected token: on
但当我写sql: select b.name,u.name
from c_button b left outer join u_teacher u
on u.u_user_id=b.u_user_id
在PL/SQL上运行就没问题
当我先查了出CButton.Name和CButton.UUserId.Id 再根据CButton.UUserId.Id 去查UTeacher.Name 结果也正常,但是查询的次数大多了,我想用一条hql就查出来
请问高手门要怎么写?????
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货