hibernate多表查询,如何写hql语句

cheney-huang 2014-01-08 04:37:56
有表 hwk(hwk_id,hwk_name,hwk_dis,course_id)
学生表 student(student_id,student_no,student_pwd,student_name,class_id)
课程表 course(course_id,course_no,course_name,depament_id,teacher_id)
选课表 sc(student_id,course_id,term)

现在如何写hql语句,通过student表中的student_no,选出hwk表中所有该学生选修过的课程,您能给写出具体的hql语句吗??谢谢
...全文
226 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
cheney-huang 2014-01-09
  • 打赏
  • 举报
回复
谢谢,问题已经解决了
引用 9 楼 suciver 的回复:
[quote=引用 6 楼 u012740454 的回复:] public class Student{ private int id; private Sting name; @ManyToMany(fetch = FetchType.LAZY,cascade = CascadeType.ALL,targetEntity=DeviceInfo.class) @JoinTable(name = "sc",joinColumns = @JoinColumn(name="student_id"),inverseJoinColumns = @JoinColumn(name="course_id")) private Set<Course> courses; } public class Course{ private int id; private Sting name; } 学生和课程是配的单向多对多关系,我现在是要通过学的课程的id查询学生的集合,通过HQL?
多对多查询的时候不能直接集合属性名.属性名要给集合的属性名取个别名在用这个别名.关联类的属性名 from Student s join s.courses c where c.id=?[/quote]
suciver 2014-01-08
  • 打赏
  • 举报
回复
hql上面已经给你了,记住我写的那个规律,其它的集合类型的hql楼主自然就会了
cheney-huang 2014-01-08
  • 打赏
  • 举报
回复
hwk这个表就不用管他了,就看 学生表 student(student_id,student_name) 课程表 course(course_id,course_name) 选课表 sc(student_id,course_id) 这个三张表,hwk这个表是我不小心复制上去的
suciver 2014-01-08
  • 打赏
  • 举报
回复
引用 6 楼 u012740454 的回复:
public class Student{ private int id; private Sting name; @ManyToMany(fetch = FetchType.LAZY,cascade = CascadeType.ALL,targetEntity=DeviceInfo.class) @JoinTable(name = "sc",joinColumns = @JoinColumn(name="student_id"),inverseJoinColumns = @JoinColumn(name="course_id")) private Set<Course> courses; } public class Course{ private int id; private Sting name; } 学生和课程是配的单向多对多关系,我现在是要通过学的课程的id查询学生的集合,通过HQL?
多对多查询的时候不能直接集合属性名.属性名要给集合的属性名取个别名在用这个别名.关联类的属性名 from Student s join s.courses c where c.id=?
cheney-huang 2014-01-08
  • 打赏
  • 举报
回复
id的name上的注解和set get方法就没写了,意思就是通过课程的id查询出来学生的集合,用HQL
cheney-huang 2014-01-08
  • 打赏
  • 举报
回复
public class Student{ private int id; private Sting name; @ManyToMany(fetch = FetchType.LAZY,cascade = CascadeType.ALL,targetEntity=Course.class) @JoinTable(name = "sc",joinColumns = @JoinColumn(name="student_id"),inverseJoinColumns = @JoinColumn(name="course_id")) private Set<Course> courses; } public class Course{ private int id; private Sting name; } 学生和课程是配的单向多对多关系,我现在是要通过学的课程的id查询学生的集合,通过HQL?
cheney-huang 2014-01-08
  • 打赏
  • 举报
回复
public class Student{ private int id; private Sting name; @ManyToMany(fetch = FetchType.LAZY,cascade = CascadeType.ALL,targetEntity=DeviceInfo.class) @JoinTable(name = "sc",joinColumns = @JoinColumn(name="student_id"),inverseJoinColumns = @JoinColumn(name="course_id")) private Set<Course> courses; } public class Course{ private int id; private Sting name; } 学生和课程是配的单向多对多关系,我现在是要通过学的课程的id查询学生的集合,通过HQL?
suciver 2014-01-08
  • 打赏
  • 举报
回复
你hwk表和course表有什么关系啊一对一还是一对多,请先把各表的对应关系以及哪些字段参与关联说清楚
cheney-huang 2014-01-08
  • 打赏
  • 举报
回复
courses是Student实体类里面一个课程集合,而且还配好了,多对多关系
cheney-huang 2014-01-08
  • 打赏
  • 举报
回复
我是这样的写的但是不行 From Student s where s.courses.id = ?
cheney-huang 2014-01-08
  • 打赏
  • 举报
回复
改下, 学生表 student(student_id,student_no,student_pwd,student_name) 课程表 course(course_id,course_no,course_name) 选课表 sc(student_id,course_id,term) 通过学生的同学的id查询出来学生所选的课程,用HQL,并且对应的实体类都好了多对多关系
  • 打赏
  • 举报
回复
只提供思路,不提供hql语句 hwk表 left jion {(学生表,课程表,选课表)这三张表查出某个学生的所有选课} on course_id相等的

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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