私はhibernate4で作成されたデータベースの次の構造を持っています:
DEPARTMENT (フィールド: DEPARTMENT_ID および DEPARTMENT_NAME) を DEPARTMENT_INSTITUTE (DEPARTMENT_ID および INSTITUTE_ID を持つ) を介して INSTITUTE (INSTITUTE_ID および INSTITUTE_NAME を持つ) に接続し、後で INSTITUTE_TEACHER (ID によって) を介して TEACHER (TEACHER_ID、NAME、SURNAME、TITLE) に接続します。 )。
すべてが 1 対多の関係にあるため、1 つの学科に多くの機関があり、1 つの機関に多くの教師がいる場合があります。
基本的にすべてをオブジェクトに入れ、JSTL を使用して 1 つのドロップダウン メニューに入れたいと思います (ドロップダウン リストにはいくつかのレベルが必要ではなく、すべて同じレベルにすることができます)。問題は、私が知らないことです:
それらすべてのデータを照会して 1 つのリストに入れる方法、
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なので、基本的に部門クラス内にはインスティテュートを含む HashSet であり、インスティテュートには教師を含むハッシュセットがあります。ご回答ありがとうございます。