我在hibernate4中创建了以下数据库结构:
我通过 DEPARTMENT_INSTITUTE(具有 DEPARTMENT_ID 和 INSTITUTE_ID)与 INSTITUTE(具有 INSTITUTE_ID 和 INSTITUTE_NAME)连接的 DEPARTMENT(具有字段:DEPARTMENT_ID 和 DEPARTMENT_NAME),后来通过 INSTITUTE_TEACHER(由 Id 再次)与 TEACHER(TEACHER_ID、NAME、SURNAME、TITLE)连接)。
这都是一对多的关系,所以一个部门可以有很多研究所,一个研究所可以有很多老师。
我想基本上把它全部放到一个对象中,并通过JSTL把它放到一个下拉菜单中(下拉列表不需要有几个级别,它可以都在同一级别上)。问题是,我不知道:
如何查询所有这些数据并将它们放入一个列表中,
在 JSP 中使用 JSTL 将它们放在下拉菜单中。
谁能告诉我我该怎么做?我很想明白这一点。这是查询“一切”的方法的框架:
[编辑]所以在这里我做了一个从数据库查询的方法,如果有人可以看看它是否是好的解决方案,我将不胜感激
public List<String> enlistEverything(){
Session session = sessionFactory.openSession();
Transaction tx = null;
List<String> toView = new ArrayList<String>();
try{
tx = session.beginTransaction();
HashSet<Department> departments = (HashSet<Department>)session.createQuery("FROM Department").list();
HashSet<Institute> institutes = new HashSet<Institute>();
HashSet<Teacher> teachers = new HashSet<Teacher>();
for(Department d : departments){
toView.add(d.getDepartmentName());
institutes.addAll(d.getInstitutes());
}
for(Institute i : institutes){
toView.add(i.getInstituteName());
teachers.addAll(i.getTeachers());
}
for(Teacher t : teachers){
toView.add(t.getTeacherTitle() + t.getTeacherName() + t.getTeacherSurname());
}
}catch(HibernateException e){
if (tx!=null) tx.rollback();
e.printStackTrace();
} finally {
session.close();
}
return toView;
}
我已经使用这个特定的教程完成了数据模型:http ://www.dzone.com/tutorials/java/hibernate/hibernate-example/hibernate-mapping-one-to-many-1.html所以基本上在部门类里面有一个带有研究所的哈希集,在研究所中有一个带有教师的哈希集。预先感谢您的回答。