小白寻求大神解决hibernate多表查询问题!!!急求求!!!!

fengxue567 2014-02-21 09:55:22
基础表 teacher(tId,tName,tPassword,tAuther),course(courseId,courseName,courseScore),class(classId,className,classNumber);teacher表与course表多对多,course与class表多对多,从而teacher与class也是多对多..我现在通过生成中间表授课表courseRecord(crId,tid,courseId,classId);
基础表 supplementary(supId,supName)supplementary与teacher表也是多对多,所有我生成一张中间表teacherSup(tsId,tid,supId);
单个的基础表或者单个的中间表的增删改查我都实现了。。。。

现在求大神指导,如何通过教师编号tid来查询两张中间表courseRecord、teacherSup中的信息??查询到的内容如何放到集合里面去?hql语句怎么写?

...全文
123 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
放纵的青春 2014-02-22
  • 打赏
  • 举报
回复
引用 10 楼 fengxue567 的回复:
引用 8 楼 djy18178 的回复:
http://www.blogjava.net/weishuangshuang/archive/2011/03/26/347078.html 去看看多对多的配置吧 这样省事很多的
之前打算用多对多的,但是一般不提倡 用多对多来配置...而且改的话我几乎要重写...我其他功能的增删改查都实现了,现在就差最后一个查询了....对一个中间表查询我已经实现了....只是没有实现查询两张中间表所对应的数据.....问别人说 可以通过sql实现联合查询,不会写语句呀...
那你就用sql去写吧 表连接查询 http://www.knowsky.com/869.html 看看资料 简单的查询还是比较容易写的 我都很久没写sql了 都是写hql 或者写不出这么复杂的sql 可以分拆一下 先一部分一部分写 然后整合到一起拉
fengxue567 2014-02-21
  • 打赏
  • 举报
回复
引用 8 楼 djy18178 的回复:
http://www.blogjava.net/weishuangshuang/archive/2011/03/26/347078.html 去看看多对多的配置吧 这样省事很多的
之前打算用多对多的,但是一般不提倡 用多对多来配置...而且改的话我几乎要重写...我其他功能的增删改查都实现了,现在就差最后一个查询了....对一个中间表查询我已经实现了....只是没有实现查询两张中间表所对应的数据.....问别人说 可以通过sql实现联合查询,不会写语句呀...
放纵的青春 2014-02-21
  • 打赏
  • 举报
回复
多对多配置好了 hibernate会自动去帮你生成第三方关联表 自动去维护里面的数据! 我下班了 有问题明天讨论!
放纵的青春 2014-02-21
  • 打赏
  • 举报
回复
http://www.blogjava.net/weishuangshuang/archive/2011/03/26/347078.html 去看看多对多的配置吧 这样省事很多的
fengxue567 2014-02-21
  • 打赏
  • 举报
回复
引用 6 楼 djy18178 的回复:
那你这个是你表关系就设计错了啊 他们这么可能没有任何联系啊·· 有外键关联吗?
我用中间表来跟另外三张表设置的 外键关联one-to-many
放纵的青春 2014-02-21
  • 打赏
  • 举报
回复
那你这个是你表关系就设计错了啊 他们这么可能没有任何联系啊·· 有外键关联吗?
fengxue567 2014-02-21
  • 打赏
  • 举报
回复
引用 4 楼 djy18178 的回复:
hibernate是一个把表变成对象的框架 你后面那一段描述我还是不太清楚什么意思 不过我可以告诉你怎么通过教师编号拿到所有的相关数据 hql="form Teacher where id=?" 这么写就行了 如果你关系是配置了级联查询的话 你在程序里面直接拿Teacher.getCourse来获取他所教的课程 班级也能这么拿 拿到所有数据你再进行你想要的操作就好了! 这就是hibernate的方便之处 只要配置好关系 拿到一个对象就可以用拿属性一样拿到他关联的其他表的数据
关键就是我没有通过级联....我的教师表、班级表、课程表都是基础表,没有任何联系,我是把多对多关系通过1对多来弄的。。。。所有才生成中间表...而中间表里的数据都是另外三张表的主键,然后我通过主键再get出的.....
放纵的青春 2014-02-21
  • 打赏
  • 举报
回复
hibernate是一个把表变成对象的框架 你后面那一段描述我还是不太清楚什么意思 不过我可以告诉你怎么通过教师编号拿到所有的相关数据 hql="form Teacher where id=?" 这么写就行了 如果你关系是配置了级联查询的话 你在程序里面直接拿Teacher.getCourse来获取他所教的课程 班级也能这么拿 拿到所有数据你再进行你想要的操作就好了! 这就是hibernate的方便之处 只要配置好关系 拿到一个对象就可以用拿属性一样拿到他关联的其他表的数据
fengxue567 2014-02-21
  • 打赏
  • 举报
回复
引用 1 楼 djy18178 的回复:
中间表只是用来维护数据关系 在hibernate中不用管吧 直接根据对象关系来操作啊 你说说你的需求 希望用教师编号查到什么内容? 你那描述我没太看明白
我用教师编号查询对应教师所教的课程(course)以及所对应的班级(class),还有所对应的辅导课程(supplementary)...同时一个教师所教的课程不是可以对应多个班级么?查询结果要将该班级通过,相加,班级人数累加,然后显示出来
放纵的青春 2014-02-21
  • 打赏
  • 举报
回复
用hibernate就要用对象来表示表了 不要拿表出来说事··我感觉我现在看见这么多表我都晕!
放纵的青春 2014-02-21
  • 打赏
  • 举报
回复
中间表只是用来维护数据关系 在hibernate中不用管吧 直接根据对象关系来操作啊 你说说你的需求 希望用教师编号查到什么内容? 你那描述我没太看明白

67,513

社区成员

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

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