1

私のプロジェクトには 2 つの Bean (Demande と Candidat ) があり、次のように Hibernate で結合クエリを実行したいと考えています。

String squery="select d.date_demande, c.nom, c.prénom from Demande d , Candidat c where d.id_candidat=c.id_candidat";
SQLQuery query=session.createSQLQuery(squery);

問題は、このクエリが返すオブジェクトがわからないことです。このクエリの結果をリストに入れたいので、jsp ファイルで簡単に使用できます。

4

2 に答える 2

2
String squery="select date_demande as {d.date_demande},nom as {c.nom}, prénom as {c.prénom} from Demande d , Candidat c   
                where d.id_candidat=c.id_candidat";
SQLQuery query=session.createSQLQuery(squery);
query.setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP);
Map<String,Object> row = null;
List data = query.list();
for (Object object : data) {
     row= (Map<String,Object>)object;
     System.out.println("date_demande: " + row.get("date_demande"));
     System.out.println("nom: " + row.get("nom"));
     System.out.println("prénom: " + row.get("prénom"));
}

List data = query.list(); を確認してください。結果を返します。

アップデート

マップを繰り返し、値とキーを確認し、それに基づいて作業します。

for (Object object : data) {

      Map row = (Map) object;
      Iterator entries = row.entrySet().iterator();
      while (entries.hasNext()) {
           Map.Entry entry = (Map.Entry) entries.next();
           System.out.println("Key = " + key + ", Value = " + entry.getValue());
     }
 }

また

   for (Object object : data) {

      Map row = (Map) object;
      System.out.print(row.get("0"));
      System.out.print("\t" + row.get("1"));
      System.out.print("\t" + row.get("2"));

   }

これをサーブレット/ストラット/スプリングコントローラーに書きます

  request.setAttribute("list", data);  

これをあなたのjspに書いてください

 <c:forEach items="${list}" var="map">
       <c:forEach items="${map}" var="entry">
              ${entry.key}<br>
              ${entry.value}<br>
       </c:forEach>
 </c:forEach>
于 2013-08-26T23:45:05.973 に答える