1

id | parent_id | nameテーブルをpojoクラスにマップするにはどうすればよいですか:

public class Node {
  private Integer id;
  private Integer parentId;
  private String name;
  private List<Node> children;
  //getters and setters
}

ルート ノード (parent_id=null) のリストを取得し、子リストを埋めたいと考えています。ツリーの深さに制限はありません。私は次のようなことを考えています:

<resultMap id="nodeResult" type="Node">
  <id property="id" column="id"/>
  <result property="parentId" column="parent_id"/>
  <result property="name" column="name"/>
  <collection property="children" resultMap="nodeResult"/>
</resultMap>
<select id="selectNode" resultMap="nodeResult">
  SELECT * FROM NODE
</select>

子リストの制限をどこに置くべきかわかりません: id=parentId. ネストされた選択を使用したくない

4

1 に答える 1

0

任意の深さのツリーを自動的に ResultMap に取り込む方法はありません。

DB 固有のソリューションはオプションですか? たとえば、PostgreSQL では、共通テーブル式を使用して、ツリーへのマッピングに適用可能な ResultSet にデータを選択できます。

それ以外の場合は、ResultMap のコレクション定義を変更して、子を選択するクエリを指すようにする必要があります。これにより、同じ結果マップを再利用して再帰的な動作を得ることができます。

于 2012-09-07T17:22:07.713 に答える