2013-09-24 130 views
0
相關的表名

我有以下的hibernate4創建的數據庫的結構:填充下拉列表,在JSP

署(有田:DEPARTMENT_ID和DEPARTMENT_NAME),我通過DEPARTMENT_INSTITUTE連接(有DEPARTMENT_ID和INSTITUTE_ID)與學院學報(有INSTITUTE_ID和INSTITUTE_NAME),後來通過INSTITUTE_TEACHER(再次通過Id)與TEACHER(TEACHER_ID,NAME,SURNAME,TITLE)連接。

這一切都有一對多的關係,所以一個部門可以有很多研究所,一個研究所可以有很多的教師。

我想基本上把它全部放到一個對象中,並通過JSTL把它放到一個下拉菜單中(下拉列表不需要有幾個級別,它可以都在同一級別上)。問題是,我不知道:

  • 如何查詢所有這些數據,並把它們放到一個列表,
  • 使用JSTL在JSP把他們在下拉菜單中。

    有誰能告訴我我該怎麼做?我很想理解這一點。這裏是方法查詢爲「一切」的骨架:我做了一個方法,從數據庫中查詢,如果任何人都可以看看,如果它是很好的解決方案或不

[編輯]所以在這裏,我將不勝感激

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所以基本上系類中有一個與機構一個HashSet和學院有教師HashSet的。 預先感謝您的回答。

+0

你使用普通的jsp/servlet的或者你的發展框架? –

+0

這很簡單,我剛開始學習它。 –

回答

0

我想基本上把所有到一個對象,並通過JSTL 把它變成一個下拉菜單(下拉列表中不需要有 幾級,它可以對所有在同一水平上) 。

使用toView地圖而不是列表來保留所有鍵值對放入下拉菜單。

Map<String,String> toView = new LinkedHashMap<String,String>(); 
.. 
.. 
toView.put(d.getDepartmentId()+"dept",d.getDepartmentName()); 
toView.put(i.getInstituteId()+"inst",i.getInstituteName()); 
toView.put(t.getTeacherId()+"teach",t.getTeacherTitle() + t.getTeacherName() + t.getTeacherSurname()); 

添加此maprequest

Map<String, String> toView = YourDataProvider.enlistEverything(); 
request.setAttribute("toView", toView); 

現在在JSP,用這個把值在下拉菜單中:

<select name="mapData"> 
    <c:forEach items="${toView}" var="data"> 
     <option value="${data.key}">${data.value}</option> 
    </c:forEach> 
</select>