hibernate查询多对多数据范例

本文介绍了一种在Java中实现多对多关系查询的方法,通过使用Hibernate框架,定义了StuDao泛型类来处理学生与教师之间的多对多关联查询。文中详细展示了如何根据条件查询单个或所有学生的相关信息,并将查询结果组织成Map返回。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public class StuDao<T> extends BaseDao {
 private TeaDao<Teachers> teaDao = new TeaDao<Teachers>();

 /*
  * 查询多对多数据
  */
 public Map<String, List<T>> queryAllStudentsInfo(boolean isQuerySingle,
   Integer stuId) {
  Map<String, List<T>> map = new HashMap<String, List<T>>();
  List<Teachers> teaList = new ArrayList<Teachers>();
  Session session = super.getSession();
  List<Students> stuList = null;
  if (isQuerySingle) {
   stuList = session.createQuery(" from Students s where s.stuid=?")
     .setInteger(0, stuId).list();
  } else {
   stuList = session.createQuery(" from Students s").list();
  }
  int listSize = stuList.size();
  for (int i = 0; i < listSize; i++) {
   Students stu = stuList.get(i);
   Set<Teachers> teaSet = stu.getTeachers();
   Iterator<Teachers> ite = teaSet.iterator();
   while (ite.hasNext()) {
    Teachers queryTea = ite.next();
    Teachers newTea = new Teachers();
    Integer teaId = queryTea.getTeaid();
    String teaName = queryTea.getTeaname();
    newTea.setTeaid(teaId);
    newTea.setTeaname(teaName);
    newTea.getStudents().add(stu);
    teaList.add(newTea);
   }
  }
  map.put("students", (List<T>) stuList);
  map.put("teachers", (List<T>) teaList);
  return map;
 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值