0

私はストラットが初めてです。私の問題に対する解決策が正しいかどうかは正確にはわかりません。私の問題は、以下に示すように2つのテーブルがあることです

関係テーブル

上記のテーブルに基づいて HTML テーブルを作成し、フィールド、グループの名前、グループの ID、およびサブグループの名前とサブグループの ID を表示したいと思います。リストとイテレータを使用しようとしました。しかし、両方の値(名前とIDの両方)を取得できません

クラス内

public List getName() {
    return namesHead;
}

public void setName(List name) {
    this.namesHead = name;
}

public String listModules() {
    SessionFactory factory = HibernateLoginUtil.getFactory();
    Session session = factory.openSession();
    Query q1 = session.createQuery ("select id,name FROM TableUsrModuleGroup WHERE stat='active'");
    for(Iterator it = q1.iterate() ; it.hasNext() ;) {
         Object row[] = (Object[]) it.next();
         namesHead.add (row[1]); //put the name
    }   
    return SUCCESS;
}

JSPページで

<table>
  <s:iterator  status="status" value="namesHead" >   
  <tr><td><s:property/></td></tr>
  </s:iterator>
</table>

(上記のコードから取得できるのはグループの名前のみです。グループ名、グループ ID、およびサブグループの名前とサブグループの ID を表示する必要があります)

4

2 に答える 2

0

Hibernate を使用している場合、最も簡単なオプションは、2 つのクラスをマップしてから、HQL クエリで両方を回復することだと思います。例えば:

public class Group {
    @OneToMany (mappedBy = "group", fetch = FetchType.LAZY)
    private Collection <SubGroup> subgroup;
    ... // Rest of the class, getters and setters
}

public class SubGroup {
    @ManyToOne (fetch = FetchType.LAZY)
    private Group group;
    ... // Rest of the class, getters and setters
}

次に、この HQL クエリを作成してGroupクラスを取得する必要があります。

Query q = session.createQuery ("FROM SubGroup");
List<SubGroup> subgroups = (List<SubGroup>) q.list();

次に、アクションでサブグループの属性を設定し、jsp でそれらにアクセスします。

<table>
   <s:iterator  value="subgroups" >   
   <tr>
      <td>
          <s:property value="name"/>
      </td>

      <td>
          <s:property value="id"/>
      </td>

      <td>
          <s:property value="group.name"/>
      </td>

      <td>
          <s:property value="group.id"/>
      </td>
   </tr>
   </s:iterator>
</table>

私はそれが役立つことを願っています=)

于 2012-10-27T08:56:40.780 に答える
0

データベースから特定のフィールドではなく、オブジェクトをフェッチします。アクションにそのオブジェクトのゲッターとセッターが必要です。そうすれば、JSP でそのオブジェクトのすべてのプロパティを取得できます (オブジェクトのセッター/ゲッターを忘れないでください)。

于 2012-10-27T09:42:00.877 に答える